home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 003 / wampumb.arc / WAMPUM.DOC < prev   
Encoding:
Text File  |  1987-05-13  |  305.1 KB  |  6,192 lines

  1.  
  2.  
  3.  
  4.  
  5.           
  6.           
  7.           
  8.           
  9.           
  10.           
  11.           
  12.           
  13.           
  14.           
  15.                               WAMPUM 3.1 User's Guide
  16.           
  17.           
  18.                         Copyright (c) Ward Mundy, 1986, 1987.
  19.           
  20.                          
  21.                                 All Rights Reserved.
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.                                                                                
  69.                                                                               
  70.              ▒▒█   ▒▒█ ▒▒▒▒▒▒█ ▒▒▒██▒▒▒█ ▒▒▒▒▒▒█ ▒▒█ ▒▒█ ▒▒▒██▒▒▒█  TM       
  71.              ▒▒█   ▒▒█ ▒▒██▒▒█ ▒▒█▒▒█▒▒█ ▒▒██▒▒█ ▒▒█ ▒▒█ ▒▒█▒▒█▒▒█         
  72.              ▒▒█   ▒▒█ ▒▒▒▒▒▒█ ▒▒█ ██▒▒█ ▒▒▒▒▒▒█ ▒▒█ ▒▒█ ▒▒█ ██▒▒█         
  73.              ▒▒█▒▒█▒▒█ ▒▒█ ▒▒█ ▒▒█   ▒▒█ ▒▒█████ ▒▒█ ▒▒█ ▒▒█   ▒▒█             
  74.              ▒▒▒██▒▒▒█ ▒▒█ ▒▒█ ▒▒█   ▒▒█ ▒▒█     ▒▒▒▒▒▒█ ▒▒█   ▒▒█        
  75.               ███  ███  ██  ██  ██    ██  ██ NET  ██████  ██    ██             
  76.  
  77.                                                                                
  78.            WAMPUM, version 3.1B, Copyright (c) Ward Mundy, 1986, 1987.   
  79.                                                                                
  80.                   ╔═══════════════════════════════════════════╗               
  81.                   ║ This program is provided  "as is" without ║             
  82.                   ║ warranty of any kind.  The entire risk as ║       
  83.                   ║ to quality and performance is with you.   ║        
  84.                   ║                                           ║        
  85.                   ║ Vers. 3.1B is licensed for distribution & ║                
  86.                   ║ evaluation use up to 90 days to determine ║        
  87.                   ║ whether the program meets your needs. Any ║      
  88.                   ║ subsequent use requires your payment of a ║               
  89.                   ║ license fee: $25 per PC; $50 per network. ║      
  90.                   ╚═══════════════════════════════════════════╝                
  91.                                                           
  92.                                                                             
  93.        Send comments to Ward Mundy, 4160 Club Drive, Atlanta, GA 30319.        
  94.  
  95.  
  96.  
  97.  
  98.                              WAMPUM Main System Menu                           
  99.                       
  100.    ╔════════════════════════╦════════════════════════╦═══════════════════════╗ 
  101.    ║                        ║                        ║                       ║ 
  102.    ║ A - ADD a new record   ║ S - SELECT utilities   ║ F - FILE select       ║ 
  103.    ║                        ║                        ║                       ║ 
  104.    ║ E - EDIT a record      ║ R - REPORTS menu       ║ I - INDEX sel/create  ║ 
  105.    ║                        ║                        ║                       ║ 
  106.    ║ D - DISPLAY records    ║ L - LABELS for mail    ║ B - BUILD new file    ║ 
  107.    ║                        ║                        ║                       ║ 
  108.    ║ M - MARK record*DEL*   ║ T - FORM LETTER menu   ║ G - GLOBAL replace    ║
  109.    ║                        ║                        ║                       ║ 
  110.    ║ U - UN*DEL* records    ║ W - WAMPUM PreFormat   ║ # - PRINTER config    ║ 
  111.    ║                        ║                        ║                       ║
  112.    ║ P - PRINT record(s)    ║ ! - RUN ext. program   ║ * - CONFIG update     ║ 
  113.    ║                        ║                        ║                       ║ 
  114.    ║ X - REBUILD/FileFiX    ║ Z - ZOOM/Relate File   ║ C - COPY utilities    ║ 
  115.    ╚════════════════════════╩════════════════════════╩═══════════════════════╝ 
  116.  
  117. HELP: Highlight the option desired and press <ENTER>. Or press F1 key for HELP.
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.           1  Overview  . . . . . . . . . . . . . . . . . . . . . . . .    1
  125.              1.1  What is WAMPUM Anyway? . . . . . . . . . . . . . . .    1
  126.              1.2  Summary of Features  . . . . . . . . . . . . . . . .    1
  127.              1.3  New Features in Version 3.1  . . . . . . . . . . . .    2
  128.              1.4  System Requirements  . . . . . . . . . . . . . . . .    2
  129.              1.5  Getting Started  . . . . . . . . . . . . . . . . . .    3
  130.                 1.5.1  Loading the Program . . . . . . . . . . . . . .    3
  131.                    1.5.1.1  Where to Put It  . . . . . . . . . . . . .    3
  132.                    1.5.1.2  How to Run It  . . . . . . . . . . . . . .    3
  133.                 1.5.2  Maneuvering on the Main Menu  . . . . . . . . .    4
  134.              1.6  Quitting WAMPUM  . . . . . . . . . . . . . . . . . .    4
  135.              1.7  Using the Cursor & Function Keys . . . . . . . . . .    5
  136.           2  End-User Functions  . . . . . . . . . . . . . . . . . . .    6
  137.              2.1   Overview  . . . . . . . . . . . . . . . . . . . . .    6
  138.              2.2   A - ADDing New Records  . . . . . . . . . . . . . .    7
  139.              2.3   E - EDITing Records . . . . . . . . . . . . . . . .    8
  140.              2.4   D - DISPLAYing Records  . . . . . . . . . . . . . .   10
  141.              2.5   M - MARKing a Record for Deletion . . . . . . . . .   11
  142.              2.6   U - UNDELETing a Record . . . . . . . . . . . . . .   13
  143.              2.7   P - PRINTing Records  . . . . . . . . . . . . . . .   15
  144.              2.8   X - REBUILD/FileFix . . . . . . . . . . . . . . . .   16
  145.              2.9   S - SELECT Utilities  . . . . . . . . . . . . . . .   17
  146.                 2.9.1  Overview  . . . . . . . . . . . . . . . . . . .   17
  147.                 2.9.2  Record Selection Criteria . . . . . . . . . . .   18
  148.                 2.9.3  Listing File Contents . . . . . . . . . . . . .   23
  149.                 2.9.4  Changing Current Data Entry Menu  . . . . . . .   23
  150.                 2.9.5  Picking the Lead Index  . . . . . . . . . . . .   24
  151.                 2.9.6  Setting Browse Mode ON  . . . . . . . . . . . .   24
  152.                 2.9.7  Listing the File Structure  . . . . . . . . . .   25
  153.              2.10  R - REPORTS Generation  . . . . . . . . . . . . . .   25
  154.              2.11  L - LABELS Production . . . . . . . . . . . . . . .   26
  155.              2.12  T - FORM LETTER Generation  . . . . . . . . . . . .   27
  156.              2.13  W - WAMPUM Preformatted Output  . . . . . . . . . .   28
  157.              2.14  Printer Selection Screen  . . . . . . . . . . . . .   29
  158.                 2.14.1  Printed Output . . . . . . . . . . . . . . . .   29
  159.                 2.14.2  Output All Records . . . . . . . . . . . . . .   29
  160.                 2.14.3  Output Records Marked for Deletion . . . . . .   29
  161.              2.15  On-Line HELP  . . . . . . . . . . . . . . . . . . .   29
  162.           3  Developer Functions . . . . . . . . . . . . . . . . . . .   31
  163.              3.1   Creating A New Application  . . . . . . . . . . . .   31
  164.                 3.1.1   Overview of Application Development Strategy .   31
  165.                 3.1.2   Create A New SubDirectory  . . . . . . . . . .   32
  166.                 3.1.3   Building a New File  . . . . . . . . . . . . .   33
  167.                 3.1.4   Selecting the New File . . . . . . . . . . . .   34
  168.                 3.1.5   Revising the Existing File Structure . . . . .   34
  169.                 3.1.6   Indexing the New File  . . . . . . . . . . . .   35
  170.                    3.1.6.1  Overview . . . . . . . . . . . . . . . . .   35
  171.                    3.1.6.2  Creating New Indexes . . . . . . . . . . .   36
  172.                    3.1.6.3  Selecting Indexes  . . . . . . . . . . . .   37
  173.                 3.1.7   Printer Configuration (.MEM file)  . . . . . .   37
  174.                    3.1.7.1  Overview . . . . . . . . . . . . . . . . .   37
  175.                    3.1.7.2  Selecting an Existing Printer Table  . . .   38
  176.                    3.1.7.3  Creating a New Printer Table . . . . . . .   39
  177.                 3.1.8   Relating a Secondary File  . . . . . . . . . .   40
  178.                 3.1.9   Storing the New Configuration (WAMPUM.MEM) . .   41
  179.                 3.1.10  Building Reports, Labels, and Form Letters . .   41
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.                    3.1.10.1  REPORTS . . . . . . . . . . . . . . . . .   41
  191.                       3.1.10.1.1  Overview . . . . . . . . . . . . . .   41
  192.                       3.1.10.1.2  Creating A New Report Format . . . .   42
  193.                       3.1.10.1.3  Modifying Existing Report Formats  .   48
  194.                       3.1.10.1.4  Outputting MEMO fields in Reports  .   48
  195.                    3.1.10.2  LABELS  . . . . . . . . . . . . . . . . .   49
  196.                       3.1.10.2.1  Overview . . . . . . . . . . . . . .   49
  197.                       3.1.10.2.2  Creating A New Label Format  . . . .   50
  198.                       3.1.10.2.3  Modifying An Existing Label Format .   51
  199.                    3.1.10.3  FORM LETTERS  . . . . . . . . . . . . . .   52
  200.                       3.1.10.3.1  Overview . . . . . . . . . . . . . .   52
  201.                       3.1.10.3.2  Creating a New Form Letter File  . .   52
  202.                       3.1.10.3.3  Building Data in Form Letter File  .   52
  203.                       3.1.10.3.4  WAMPUM Field Data Expressions  . . .   54
  204.                 3.1.11  Building Function Key Macros (KEYS.DBF)  . . .   56
  205.                 3.1.12  Building Edit Checks (EDIT.DBF)  . . . . . . .   58
  206.                 3.1.13  Building Data Entry Menus (MENUS.DBF)  . . . .   64
  207.                 3.1.14  Building an Audit Trail File (AUDIT.DBF) . . .   66
  208.                 3.1.15  Preformatted Output (WAMPUM.DBF) . . . . . . .   66
  209.                    3.1.15.1  Overview  . . . . . . . . . . . . . . . .   66
  210.                    3.1.15.2  Building the WAMPUM File  . . . . . . . .   67
  211.                    3.1.15.3  Adding/Editing the WAMPUM File  . . . . .   67
  212.                 3.1.16  Resetting the Developer Password . . . . . . .   68
  213.                 3.1.17  Network Considerations . . . . . . . . . . . .   69
  214.                 3.1.18  Making a Backup of the User Application  . . .   70
  215.                 3.1.19  Writing the Documentation  . . . . . . . . . .   70
  216.              3.2   ! - RUNning an External Program . . . . . . . . . .   70
  217.              3.3   Z - ZOOMing or RELATing a Supplemental File . . . .   71
  218.              3.4   G - Global Replacement of Data  . . . . . . . . . .   72
  219.              3.5   C - Copy Utilities for Importing & Exporting Data .   73
  220.              3.6   Deleting & Undeleting Groups of Records . . . . . .   75
  221.              3.7   Reserved Variables, dBASE & Clipper Functions . . .   76
  222.                 3.7.1  Overview  . . . . . . . . . . . . . . . . . . .   76
  223.                 3.7.2  CHARACTER/STRING functions  . . . . . . . . . .   76
  224.                 3.7.3  DATE functions  . . . . . . . . . . . . . . . .   77
  225.                 3.7.4  DUPKEY("FIELDNAME") prevents duplicate keys . .   78
  226.                 3.7.5  EMPTY(fieldname) tests for empty fields . . . .   78
  227.                 3.7.6  LASTTIME field in data bases  . . . . . . . . .   79
  228.                 3.7.7  LASTUPDT field in data bases  . . . . . . . . .   79
  229.                 3.7.8  LASTUSER field in data bases  . . . . . . . . .   79
  230.                 3.7.9  MEMOTRAN(fieldname) outputs MEMO fields . . . .   79
  231.              3.8   PATH considerations   . . . . . . . . . . . . . . .   79
  232.              3.9   Enabling USERID's and Passwords . . . . . . . . . .   80
  233.              3.10  WAMPUM & DOS System Errors  . . . . . . . . . . . .   81
  234.              3.11  Credits . . . . . . . . . . . . . . . . . . . . . .   82
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.           1  Overview
  257.           
  258.           1.1  What is WAMPUM Anyway?
  259.           
  260.                Ward's Automated Menu Package Using Microcomputers (WAMPUM)
  261.           is a full-featured, menu-driven implementation of the dBASE III
  262.           programming language.  Version 3.1 adds network support while
  263.           remaining both an application development tool and an end-user
  264.           data base management system.  WAMPUM is a copyrighted work owned
  265.           by Ward Mundy.  The software is licensed for use under certain
  266.           terms and conditions which are displayed when you run or
  267.           terminate the running of the program.  A copy of the license
  268.           agreement accompanies this documentation.  Read the terms of the
  269.           license carefully before using or copying the software!  If you
  270.           do not agree with the license terms, you may discontinue use of
  271.           the software at any time. 
  272.           
  273.                Special thanks to Nantucket, Inc., the developer of Clipper,
  274.           the premier dBASE III compiler.  Without Clipper, there would be
  275.           no WAMPUM.  Clipper's flexibility and many enhancements over
  276.           Ashton-Tate's dBASE interpreters made development of WAMPUM a
  277.           true labor of love.  We also express our sincere appreciation to
  278.           Nantucket for authorizing the distribution of their REPORT.EXE
  279.           and LABEL.EXE programs to end-users without additional charge. 
  280.           These two programs simulate the dBASE III commands of CREATE
  281.           REPORT and CREATE LABEL and make WAMPUM a complete stand-alone
  282.           application development system without reliance upon any dBASE
  283.           interpreter.
  284.           
  285.           
  286.           1.2  Summary of Features
  287.           
  288.                As noted, WAMPUM provides much of the functionality of dBASE
  289.           III through its simple menu interface.  Some of the features
  290.           included in WAMPUM are outlined below.  For a more detailed look
  291.           at individual features, consult that section of the User's Guide.
  292.           
  293.                Key features include:
  294.           
  295.                *  Creation and use of dBASE III-compatible data bases
  296.                *  Complete multi-user network support using any dBASE file
  297.                *  Field types include: Char, Numeric, Date, Logical, Memo
  298.                *  Creation and use of up to 7 B-Tree Indexes per .DBF file
  299.                *  Add, Edit, Delete, & Undelete Records in any .DBF file
  300.                *  Display, List and Print Records from any .DBF file
  301.                *  10 Data Entry Screen Formats tailored to any application
  302.                *  Creation and use of dBASE III-compatible reports & labels
  303.                *  Creation and use of WAMPUM "mail merge" form letter files
  304.                *  Relation of second data base by key for any output format
  305.                *  Full-featured copy utilities to import & export any data
  306.                *  Creation of printer templates to support up to 10 fonts
  307.                *  Library of preformatted output forms with sort & select 
  308.                *  Library of edit-checks tailored to any .DBF file system
  309.                *  Library of macros tailored to any WAMPUM application
  310.                *  Calculated fields using standard dBASE expressions
  311.                *  File and index packing to restore damaged data bases
  312.  
  313.  
  314.  
  315.                                         - 1 -
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.                *  Automated Selection Assist for complex Boolean searches
  323.                *  Boolean searches of dBASE III-compatible MEMO fields
  324.                *  Audit Trail / Transaction Logging for multi-user tasks
  325.                *  NetBIOS-compatible record & file locking network support
  326.                *  Global search & replace of any data elements in one pass
  327.           
  328.           
  329.           1.3  New Features in Version 3.1
  330.           
  331.                WAMPUM 3.1 provides many new features as well as a number of
  332.           refinements suggested by existing users.  If you already are
  333.           using version 3.0, you may wish to scan the new features summary
  334.           below rather than re-reading the entire User's Guide.  For ease
  335.           of reference, new features are summarized here as well as in the
  336.           appropriate section of this User's Guide.
  337.           
  338.                Key new features of version 3.1 include:
  339.           
  340.                *  Complete multi-user network support using any dBASE file
  341.                *  NetBIOS-compatible record & file locking network support
  342.                *  Creation and use of up to 7 B-Tree Indexes per .DBF file
  343.                *  Global search & replace of 10 data elements in one pass
  344.                *  Manipulation of any 5 related data bases in form letters
  345.                *  Index key retrieval for production of single form letters
  346.                *  Automatic posting of LASTUSER information in data base
  347.                *  PASSWORD protection system for network environments
  348.                *  Customized USER configurations for network environments
  349.                *  Specification of particular fields for use in BROWSE mode
  350.                *  Simplified file structure modification like dBASE III's
  351.                *  Multi-drive support for storage of data bases & indexes
  352.                *  Forced field confirmation with <ENTER>, if desired
  353.                *  Enhanced documentation outlining many dBASE functions
  354.           
  355.           
  356.           1.4  System Requirements
  357.           
  358.                WAMPUM 3.1 may be used on any IBM PC-compatible computer
  359.           running DOS 2.0 or higher with a hard disk.  For multi-user
  360.           network applications, DOS 3.1 or higher is required on every
  361.           computer as well as an IBM NetBIOS-compatible network.  For
  362.           performance reasons, an 80286 or 80386 processor is desirable.
  363.           Minimum memory requirement is 320K above and beyond the memory
  364.           requirements of DOS and any memory-resident programs in use. 
  365.           Minimum memory is 420K (with DOS 3.1) to link to REPORT and LABEL
  366.           programs from within WAMPUM.  Without much in the way of
  367.           memory-resident software, WAMPUM typically needs 512K to operate
  368.           satisfactorily after loading DOS. WAMPUM will run on either a
  369.           monochrome or color display.  In the case of certain compatibles
  370.           such as Compaq, WAMPUM should be run in forced monochrome mode by
  371.           issuing the command WAMPUM MONO.
  372.           
  373.                Because WAMPUM creates a number of work files from time to
  374.           time, and because WAMPUM typically works with numerous files open
  375.           at the same time, you will need to make sure that when your
  376.  
  377.  
  378.  
  379.  
  380.  
  381.                                         - 2 -
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.           computer is started, a file named CONFIG.SYS exists in the root
  389.           directory of the boot disk.  This file must contain the following
  390.           entries with the minimum values shown:
  391.           
  392.                          FILES=20
  393.                          BUFFERS=24
  394.           
  395.                Failure to include the above commands will result in very
  396.           unpredictable behavior of WAMPUM which could destroy data bases
  397.           and indexes in use at the time of a very likely system crash!
  398.           
  399.           
  400.           1.5  Getting Started 
  401.           
  402.           1.5.1  Loading the Program
  403.           
  404.           1.5.1.1  Where to Put It
  405.           
  406.                WAMPUM is an executable program with the name WAMPUM.EXE. It
  407.           typically is distributed with several other programs including
  408.           REPORT.EXE, LABEL.EXE, and several printer configuration files
  409.           with a .MEM file extension.  All of these should be copied into a
  410.           directory on your hard disk which is included in the PATH command
  411.           whenever you start up your system.  This will assure that WAMPUM
  412.           can be run from any subdirectory on your hard disk.  If you are
  413.           not familiar with the path command, consult your DOS manual for
  414.           more details.  Simply stated, the PATH command tells DOS which
  415.           directories (other than the current one) should be searched
  416.           whenever you ask the computer to run a program.  In building
  417.           systems, typically we set aside a directory called \UTIL to store
  418.           applications software.  This directory is included in the path
  419.           command when the computer is started.  If you have such a
  420.           directory and it is in your PATH, then copy WAMPUM into this
  421.           directory.
  422.           
  423.           
  424.           1.5.1.2  How to Run It
  425.           
  426.                WAMPUM is designed to support two, very different audiences.
  427.           The first group is end-users, and the second is application
  428.           developers.  This design is implemented by providing two
  429.           different menus for the two groups. The end-user menu is designed
  430.           to let a user do the normal things that are done with a database:
  431.           adding, editing, and deleting  records; running reports and
  432.           labels; selecting the primary index for input and output of data;
  433.           and entering record selection criteria to narrow down which
  434.           records are produced in listings and reports.  Provision is also
  435.           made to allow the end-user to rebuild a damaged data base or
  436.           index typically occasioned by a power failure.  The end-user mode
  437.           is initiated by typing WAMPUM and pressing the <ENTER> key at the
  438.           DOS prompt.
  439.           
  440.                WAMPUM's developer mode contains all of the options outlined
  441.           above plus a number of additional options designed to allow a
  442.           person to develop a data base application for others to use.  You
  443.           do NOT have to be a programmer to become a good WAMPUM developer!
  444.  
  445.  
  446.  
  447.                                         - 3 -
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.           The developer's mode allows the creation of new data files and
  455.           indexes as well as reports, labels, and printer formats.  It also
  456.           provides access to the data files used to develop edit checks,
  457.           data entry menus, macros, preformatted output, and form letters.
  458.           Finally it allows for customization of applications through the
  459.           storing of a configuration identifying the files, indexes,
  460.           printer, and name of each application. The developer mode is
  461.           initiated by typing WAMPUM VOODOO and pressing the <ENTER> key at
  462.           the DOS prompt. 
  463.           
  464.                As previously noted, if you are using WAMPUM on a compatible
  465.           such as the COMPAQ which makes DOS think it has a color card even
  466.           when using a monochrome display, then you may want to force
  467.           WAMPUM into monochrome mode by starting it with WAMPUM MONO or
  468.           WAMPUM VOODOO MONO.
  469.           
  470.                WAMPUM also uses both a Report Writer (REPORT.EXE) and a
  471.           Label Generator (LABEL.EXE) to create report and label templates.
  472.           Depending upon the amount of memory in your machine, these
  473.           programs may or may not be able to run from within the WAMPUM
  474.           program itself.  This User's Guide explains the procedure for
  475.           running REPORT and LABEL from within WAMPUM.  If you lack the
  476.           necessary memory to do this, you may run the report writer from
  477.           the DOS prompt by typing REPORT filename where filename is the
  478.           name of the report template you wish to create or edit.  You may
  479.           run the label generator from the DOS prompt by typing LABEL
  480.           filename where filename is the name of the label template you
  481.           wish to create or edit.  
  482.           
  483.           
  484.           1.5.2  Maneuvering on the Main Menu
  485.           
  486.                Once you have started WAMPUM by executing one of the
  487.           commands outlined above, you will see the WAMPUM logo and then
  488.           the Main System Menu.  Note that just below the menu is a one-
  489.           line sentence of HELP regarding the highlighted option.  You move
  490.           between the options with the UP and DOWN cursor keys.  The HOME
  491.           key will take you to the first option on the menu, and the END
  492.           key will move you to the last option.
  493.           
  494.                Execute a choice on the Main System Menu by pressing the
  495.           <ENTER> key when the choice desired is highlighted or by typing
  496.           the LETTER corresponding to the choice you wish to run.  Using
  497.           the first letter method, you do not have to press <ENTER>.
  498.           
  499.                Exit from WAMPUM to DOS and end the program by pressing the
  500.           <ESC>ape key while the Main System Menu is displayed.
  501.           
  502.                Context-sensitive HELP on WAMPUM features is available by
  503.           pressing the F1 function key on any screen.
  504.           
  505.           
  506.           1.6  Quitting WAMPUM
  507.           
  508.                As indicated, the <ESC> key is pressed to exit from WAMPUM
  509.           to DOS from the Main System Menu.
  510.  
  511.  
  512.  
  513.                                         - 4 -
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.           1.7  Using the Cursor & Function Keys
  521.           
  522.                A number of keys have special functions within the WAMPUM
  523.           System.  Oftentimes, these keys are not the same as what you may
  524.           have used in previous dBASE III applications.  Please scan
  525.           through the summaries below before you attempt to either use or
  526.           build a WAMPUM application.  Throughout this manual, you will see
  527.           references to multiple key combinations such as CTRL-W or
  528.           ALT-F10.  Whenever you see a hyphenated key combination such as
  529.           these, it means hold down the first key, then tap the second key,
  530.           then release both keys.  For example, CTRL-W means hold down the
  531.           CTRL key, then tap the W key (case does not matter), then release
  532.           both keys.  ALT-F10 means hold down the ALT key, then tap the F10
  533.           function key, then release both keys.  We use the word "TAP"
  534.           advisedly.  Most PC's have a "keyboard buffer" which remembers
  535.           keystrokes which may not yet have been displayed.  Every key on
  536.           the PC acts like a repeating key on a selectric typewriter. Thus,
  537.           TAP means touch and release promptly!
  538.           
  539.                <ESC> is the all-purpose key which is used to get you out of
  540.           trouble.  From ANY screen, you can always press the ESCape key to
  541.           exit without preserving what you already were doing.  From the
  542.           Main Menu, pressing ESC will terminate WAMPUM and return you to
  543.           the computer's operating system level.
  544.           
  545.                Ctrl-W is WAMPUM's SAVE key.  Pressing CTRL-W typically
  546.           tells the computer to SAVE what is displayed on the screen and
  547.           move on to the next step.  If you are a previous dBASE III user,
  548.           then CTRL-W is equivalent to dBASE III's CTRL-End key.
  549.           
  550.                Ctrl-Home moves the user to the first field on a data entry
  551.           screen.
  552.           
  553.                Ctrl-End moves the user to the last field on a data entry
  554.           screen.
  555.           
  556.                <Enter> or <Down> Cursor completes an entry in a field and
  557.           moves the user to the next field, if any, on the screen.
  558.           
  559.                <Up> Cursor moves the user to the previous field, if any, on
  560.           the screen.
  561.           
  562.                <PgDn> signifies that data entry for this screen of data has
  563.           been completed and that the user wishes to SAVE the data and
  564.           continue.
  565.           
  566.                <PgUp> signifies that data entry for this screen of data has
  567.           been completed and that the user wishes to SAVE the data and
  568.           continue backwards through the data base (except when ADDing new
  569.           records to the data base).
  570.           
  571.                Ctrl-<Left> Cursor moves the cursor to the beginning of the
  572.           current data entry field.
  573.           
  574.                Ctrl-<Right> Cursor moves the cursor to the end of the
  575.           current data entry field.
  576.  
  577.  
  578.  
  579.                                         - 5 -
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.           
  587.                Ctrl-Y deletes the contents of the current field from the
  588.           cursor position to the end of the field.
  589.           
  590.                <Ins> toggles the computer between insert mode and
  591.           strike-over mode.  The word <INSERT> appears at the top of the
  592.           screen when INSERT mode is active.
  593.           
  594.                <Del> deletes the character currently under the cursor.
  595.           
  596.                F1 function key is the all-purpose HELP key.  It retrieves a
  597.           screenload of helpful hints which are keyed to your position in
  598.           the WAMPUM system.
  599.           
  600.                F2-F10 function keys are macros tailorable by the developer
  601.           to hold any character string desired.  The same is true for the
  602.           SHIFT, ALT, and CONTROL key combinations with the ten function
  603.           keys.  In short, 39 keyboard macros can be designed for each
  604.           WAMPUM application.
  605.           
  606.           
  607.           
  608.           2  End-User Functions
  609.           
  610.           2.1   Overview
  611.           
  612.                If you are just beginning to use WAMPUM, then skip to the
  613.           next section on Developer Functions after reading this overview. 
  614.           The developer's section will explain the step-by-step process for
  615.           building a new application.  This section is designed to acquaint
  616.           the end-user with information necessary to build and maintain an
  617.           existing data base as well as how to extract information from an
  618.           existing data base.
  619.           
  620.                End-users typically want to do two things with a data base.
  621.           They want to add or change information in an existing file (INPUT
  622.           functions), and they want to extract information from an existing
  623.           file (OUTPUT functions).
  624.           
  625.                In WAMPUM, INPUT consists of ADDing new records, EDITing
  626.           existing records, and DELETing or UNDELETing existing records.
  627.           For network applications, only one person can edit any individual
  628.           record at any given time.  Multiple people may be adding new
  629.           records at the same time.  And multiple people may be editing
  630.           different existing records at the same time.
  631.           
  632.                In WAMPUM, OUTPUT means you just want to look at or print
  633.           something which already exists in the file.  For network users,
  634.           multiple people can be outputting information from the same file
  635.           simultaneously.  ALL output falls into one of two categories:
  636.           single record output or multiple record output.  
  637.           
  638.                Single record OUTPUT is quick because it typically involves
  639.           retrieval of a single record by an indexed key.  This output may
  640.           consist of either DISPLAYing an individual record or PRINTing an
  641.           individual record.  In either case the end-user is prompted for
  642.  
  643.  
  644.  
  645.                                         - 6 -
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.           the key of the record to find, and WAMPUM will find it in less
  653.           than a second even with extremely large data bases.  The record
  654.           is displayed or printed in its entirety just as the information
  655.           is stored in the data base.
  656.           
  657.                Multiple record OUTPUT tends to be slower but more useful. 
  658.           It is slower because WAMPUM must make a full pass through the
  659.           data base to find the records desired for output.  It tends to be
  660.           more useful because the output typically is formatted in such a
  661.           way that the extracted data is more meaningful.  Multiple record
  662.           output ALWAYS involves three steps: (1) picking the lead index to
  663.           specify the order in which the records will appear in the output,
  664.           e.g. alphabetically, by date, or by part number; (2) selecting
  665.           (i.e. narrowing down) the group of records which should be output
  666.           using Boolean logic, e.g. find all the new accounts for January
  667.           or just the new accounts with sales over $1,000,000; and (3)
  668.           choosing the type of output desired: a list, report, mailing
  669.           labels, or a form letter. A billing statement, an overdue notice,
  670.           and monthly summary of accounts all are examples of multiple
  671.           record output which can easily be produced using WAMPUM.
  672.           
  673.                You simply must master the above concepts before use of any
  674.           data base management system can be of much value.  If you don't
  675.           understand the relationship between input and output and the
  676.           various types of output, put this User's Guide aside and try
  677.           reading this section again tomorrow.
  678.           
  679.           
  680.           2.2   A - ADDing New Records
  681.           
  682.                To add new records to any data base, that file must first be
  683.           selected.  Look at the bottom of the WAMPUM Main Menu to make
  684.           sure that the file you want to use is already selected.  If not,
  685.           it can be selected using the F - File Select option in developer
  686.           mode only.
  687.           
  688.                If the file you wish to work with is selected, then you
  689.           should also consider whether there are indexes which you want
  690.           automatically updated as you ADD new records to the file.  If so,
  691.           then these, too, must be selected before you ADD new records. 
  692.           You can determine which indexes are in use by looking at the
  693.           bottom of the Main System Menu screen.  New indexes can be
  694.           created and/or opened using the I - Index Sel/Create option in
  695.           developer mode only.
  696.           
  697.                Once you are working with the correct file and indexes, then
  698.           ADDing records is as simple as highlighting the A - Add a New
  699.           Record option and pressing <ENTER>. Or you may simply type an A
  700.           while the Main System Menu is displayed.
  701.           
  702.                The screen will clear and WAMPUM will display a data entry
  703.           screen with all of the fields in the current file.  It will
  704.           indicate the proposed new record number of this entry at the top
  705.           of the form. Type in the data you wish to enter for each field
  706.           using the UP and DOWN cursor keys to move from field to field.  
  707.           
  708.  
  709.  
  710.  
  711.                                         - 7 -
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.                If a file has a substantial number of fields, then all of
  719.           the fields may not fit on one data entry screen.  In this case,
  720.           the word *MORE* will appear in the bottom right corner of the
  721.           screen.  When you complete entry of data on the first screen,
  722.           then a second screen with the remaining fields will appear.
  723.           
  724.                Saving a new entry to the file can be accomplished in
  725.           several ways.  (1) Pressing <ENTER> while the cursor is
  726.           positioned in the last field of the last data entry screen will
  727.           save the record.  (2) Completely filling the last field with text
  728.           also will save the record.  (3) Pressing CTRL-W will save the new
  729.           record without displaying the remaining data entry screens if the
  730.           record requires more than one screen for data entry. (4) Pressing
  731.           <PgDn> in the last data entry screen of a record will also SAVE
  732.           the record.
  733.           
  734.                Aborting a new entry can be accomplished by pressing the
  735.           <ESC>ape key at any time before any of the SAVE methods outlined
  736.           above occur.  <PgUp> also aborts data entry in ADD mode only.
  737.           
  738.                WAMPUM supports updating of Memo fields in a slightly
  739.           different way than dBASE III.  If you wish to display or edit a
  740.           memo field, then first move the cursor to that field.  It will be
  741.           displayed on the screen with the field name followed by *MEMO*. 
  742.           Note that memo fields in WAMPUM appear to be logicial fields
  743.           which can accept True, False, Yes, or No as entries.  If you wish
  744.           to edit the memo field, simply set the logical field to True or
  745.           Yes by entering a T or Y.  When you complete entry of data for
  746.           this record and execute a SAVE using one of the methods outlined
  747.           above, the Memo editor will display any memo field marked True
  748.           and allow you to update it as desired.  You then can either SAVE
  749.           the updated Memo text by pressing Ctrl-W or ABORT the update and
  750.           leave the Memo text as it was by pressing <ESC>ape.
  751.           
  752.                After you ADD a new entry to the file, WAMPUM will display
  753.           another blank data entry screen thereby allowing you to add
  754.           another entry.  If you do not wish to add another entry, simply
  755.           press the <ESC>ape key to exit to the Main System Menu.
  756.           
  757.           
  758.           2.3   E - EDITing Records
  759.           
  760.                To edit records in any data base, that file must first be
  761.           selected and cannot be empty.  Look at the bottom of the WAMPUM
  762.           Main Menu to make sure that the file you want to use is already
  763.           selected.  If not, it can be selected using the F - File Select
  764.           option in developer mode only.
  765.           
  766.                If the file you wish to work with is selected, then you
  767.           should also consider whether there are indexes which you want
  768.           automatically updated as you EDIT records in the file.  If so,
  769.           then these, too, must be selected before you EDIT any records. 
  770.           You can determine which indexes are in use by looking at the
  771.           bottom of the Main System Menu screen.  New indexes can be
  772.           created and/or opened using the I - Index Sel/Create option in
  773.           developer mode only.
  774.  
  775.  
  776.  
  777.                                         - 8 -
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.           
  785.                Once you are working with the correct file and indexes, then
  786.           EDITing records is as simple as highlighting the E - Edit Record
  787.           option and pressing <ENTER>. Or you may simply type an E while
  788.           the Main System Menu is displayed.
  789.           
  790.                If you are not using indexes in conjunction with the file
  791.           being edited, then you will be prompted for the record number of
  792.           the record you wish to edit.  Simply type in the number desired
  793.           and press the <ENTER> key.  
  794.           
  795.                If you are using one or more indexes in conjunction with the
  796.           file being edited, then the first index displayed at the bottom
  797.           of the Main System Menu is considered the LEAD INDEX and will be
  798.           used to retrieve records.  If this is not the index you wish to
  799.           use for record retrieval, see the section on Select Utilities for
  800.           information on how to change the lead index.
  801.           
  802.                When editing with an index, you will be prompted to enter a
  803.           value for the field which is currently the LEAD INDEX.  With
  804.           character fields, you may enter all or part of a key, and WAMPUM
  805.           will search for a match on the portion of the key entered.  With
  806.           other types of fields, you must enter the exact key to find. Note
  807.           that capitalization is critical in finding matches.  If a
  808.           LASTNAME field in your data base contains an entry of SMITH and
  809.           you enter Smith as the key, then WAMPUM will not find the SMITH
  810.           you are looking for.
  811.           
  812.                Once you have entered either a record number or the key of
  813.           the record to find, WAMPUM will search for the first match. 
  814.           Assuming your application allows duplicate keys, there may be
  815.           more than one match on a particular key, e.g. there may be a
  816.           number of Smith's in your data base.  If the first data entry
  817.           screen displayed is not the Smith desired, then <PgDn> through
  818.           the records until the correct record is retrieved. 
  819.           
  820.                If you are using a data base with too many fields to fit on
  821.           one screen, then you may have to <PgDn> several times just to
  822.           move to the next record.  There currently is no key which can be
  823.           pressed to SKIP to the next record without first displaying all
  824.           of the edit screens for the current record.
  825.           
  826.                If you skip past the record desired, you can also back up
  827.           through the file in the order of the current key by pressing the
  828.           <PgUp> key at any time.
  829.           
  830.                Once the record is displayed which you desire to EDIT, move
  831.           to the fields to be edited using the UP and DOWN cursor keys. You
  832.           can change existing data for a field in several ways. (1) You may
  833.           type over the existing data.  (2) Or you may delete the existing
  834.           data by pressing CTRL-Y and then enter the new data.  (3) Or you
  835.           may INSERT new data into a field by positioning the cursor where
  836.           you want the insert to begin. Then press the <INS>ert key.
  837.           
  838.  
  839.  
  840.  
  841.  
  842.  
  843.                                         - 9 -
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.                With multi-screen records, you can move forward to the next
  851.           screen by pressing <PgDn>.  You cannot move backward within a
  852.           record by pressing <PgUp>.  <PgUp> will save the record and move
  853.           you to the previous record in the data base.
  854.           
  855.                As was true with ADD mode, you can edit Memo fields by
  856.           marking them True or Yes and then SAVing the record.  Similarly,
  857.           you SAVE edited records in the same way that you do in ADD mode
  858.           except that <PgUp> also executes a SAVE in EDIT mode and moves
  859.           you back one record.  CTRL-W saves the current record and prompts
  860.           you for the next record to find.  <PgDn> saves the current record
  861.           and then displays the next record in the file for editing.
  862.           
  863.                You can abort any EDIT by pressing <ESC>ape before any of
  864.           the SAVE actions outlined above occur.
  865.           
  866.                If you attempt to find a record which does not exist in the
  867.           data base, WAMPUM will display an error message and beep at you.
  868.           You then will be prompted to enter a key of another record to
  869.           find.  When you have searched for all the records desired, press
  870.           <ESC>ape to exit to the Main System Menu.
  871.           
  872.           
  873.           2.4   D - DISPLAYing Records
  874.           
  875.                To display records in any data base, that file must first be
  876.           selected and cannot be empty.  Look at the bottom of the WAMPUM
  877.           Main Menu to make sure that the file you want to use is already
  878.           selected.  If not, it can be selected using the F - File Select
  879.           option in developer mode only.
  880.           
  881.                If the file you wish to work with is selected, then you
  882.           should also consider whether there is an index which you want to
  883.           use for record retrieval.  If so, then this index must be
  884.           selected as the lead index before you DISPLAY any records.  
  885.           
  886.                Once you are working with the correct file and index, then
  887.           DISPLAYing records is as simple as highlighting the D - Display
  888.           Record option and pressing <ENTER>. Or you may simply type a D
  889.           while the Main System Menu is displayed.
  890.           
  891.                If you are not using indexes in conjunction with the file
  892.           being displayed, then you will be prompted for the record number
  893.           of the record you wish to display.  Simply type in the number
  894.           desired and press the <ENTER> key.  
  895.           
  896.                If you are using an index in conjunction with the file being
  897.           displayed, then the first index displayed at the bottom of the
  898.           Main System Menu is considered the LEAD INDEX and will be used to
  899.           retrieve records.  If this is not the index you wish to use for
  900.           record retrieval, see the section on Select Utilities.
  901.           
  902.                When displaying with an index, you will be prompted to enter
  903.           a value for the field which is currently the LEAD INDEX.  You may
  904.           enter all or part of a key, and WAMPUM will search for a match on
  905.           the portion of the key entered.  Note that capitalization is
  906.  
  907.  
  908.  
  909.                                        - 10 -
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.           critical in finding matches.  If a LASTNAME field in your data
  917.           base contains an entry of SMITH and you enter Smith as the key,
  918.           then WAMPUM will not find the SMITH you are looking for.
  919.           
  920.                Once you have entered either a record number or the key of
  921.           the record to find, WAMPUM will search for the first match. 
  922.           Assuming your application allows duplicate keys, there may be
  923.           more than one match on a particular key, e.g. there may be a
  924.           number of Smith's in your data base.  If the first data entry
  925.           screen displayed is not the Smith desired, then <PgDn> through
  926.           the records until the correct record is retrieved. 
  927.           
  928.                If you are using a data base with too many fields to fit on
  929.           one screen, then each time you press <PgDn>, WAMPUM will skip to
  930.           the next record.  It will NOT display the subsequent fields of
  931.           the current record as is the case in EDIT mode.  If you wish to
  932.           look at the subsequent fields of the current record, then press
  933.           the <ENTER> key rather than <PgDn>.  In addition, if there are
  934.           MEMO fields in the data base with which you are working, these
  935.           fields will show T if there is an entry in the field.  Otherwise,
  936.           the field will be marked F.  To display the first screen of
  937.           information in any MEMO field, just press <RETURN> rather than
  938.           <PgDn> on the last screen of the display of the standard fields.
  939.           If you need to look at the entire contents of of a MEMO field
  940.           rather than just the first screen, then you must use Edit mode.
  941.           
  942.                If you skip past the record desired, you can also back up
  943.           through the file in the order of the current key by pressing the
  944.           <PgUp> key at any time.
  945.           
  946.                You can abort any DISPLAY by pressing <ESC>ape key.
  947.           
  948.                If you attempt to find a record which does not exist in the
  949.           data base, WAMPUM will beep at you and prompt for another record
  950.           to find.  When you have displayed all the records desired, press
  951.           <ESC>ape to exit to the Main System Menu.
  952.           
  953.           
  954.           2.5   M - MARKing a Record for Deletion
  955.           
  956.                To mark records as deleted in any data base, that file must
  957.           first be selected and cannot be empty.  Look at the bottom of
  958.           the WAMPUM Main Menu to make sure that the file you want to use
  959.           is already selected.  If not, it can be selected using the F -
  960.           File Select option in developer mode only.
  961.           
  962.                If the file you wish to work with is selected, then you
  963.           should also consider whether there is an index which you want to
  964.           use for record retrieval.  If so, then this index must be
  965.           selected as the lead index before you attempt to DELETE any
  966.           records.  
  967.           
  968.                Once you are working with the correct file and index, then
  969.           marking records DELETED is as simple as highlighting the M - Mark
  970.           Record *DEL* option and pressing <ENTER>. Or you may simply type
  971.           an M while the Main System Menu is deleteed.
  972.  
  973.  
  974.  
  975.                                        - 11 -
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.           
  983.                If you are not using indexes in conjunction with the file,
  984.           then you will be prompted for the record number of the record you
  985.           wish to mark deleted.  Simply type in the number desired and
  986.           press the <ENTER> key.  
  987.           
  988.                If you are using an index in conjunction with the file, then
  989.           the first index displayed at the bottom of the Main System Menu
  990.           is considered the LEAD INDEX and will be used to retrieve
  991.           records.  If this is not the index you wish to use for record
  992.           retrieval, see the section on Select Utilities.
  993.           
  994.                When using an index, you will be prompted to enter a value
  995.           for the field which is currently the LEAD INDEX.  You may enter
  996.           all or part of a key, and WAMPUM will search for a match on the
  997.           portion of the key entered.  Note that capitalization is critical
  998.           in finding matches.  If a LASTNAME field in your data base
  999.           contains an entry of SMITH and you enter Smith as the key, then
  1000.           WAMPUM will not find the SMITH you are looking for.
  1001.           
  1002.                Once you have entered either a record number or the key of
  1003.           the record to find, WAMPUM will search for the first match. 
  1004.           Assuming your application allows duplicate keys, there may be
  1005.           more than one match on a particular key, e.g. there may be a
  1006.           number of Smith's in your data base.  If the first entry
  1007.           displayed is not the Smith desired, then <PgDn> through the
  1008.           records until the correct record is retrieved. 
  1009.           
  1010.                If you are using a data base with too many fields to fit on
  1011.           one screen, note that WAMPUM will only display the first screen
  1012.           of data for each record while in DELETE mode.  
  1013.           
  1014.                If you skip past the record desired, you can also back up
  1015.           through the file in the order of the current key by pressing the
  1016.           <PgUp> key at any time.
  1017.           
  1018.                Once you find the record you wish to mark DELETED, then
  1019.           answer the DELETE prompt by entering a T for True or Y for Yes,
  1020.           and the record will be marked deleted.
  1021.           
  1022.                You can abort any search by pressing <ESC>ape key.
  1023.           
  1024.                If you attempt to find a record which does not exist in the
  1025.           data base, WAMPUM will beep at you and prompt for another record
  1026.           to find.  When you have deleted all the records desired, press
  1027.           <ESC>ape to exit to the Main System Menu.
  1028.           
  1029.                NOTE:  WAMPUM uses the same conventions as dBASE III insofar
  1030.           as deleted records are concerned.  Deleted records are not really
  1031.           deleted.  They are simply marked with an asterisk (*) in the
  1032.           first record position which signifies that they will be deleted
  1033.           the next time the file is rebuilt using the X - REBUILD/FileFix
  1034.           option.  At any time before you rebuild the file, any record
  1035.           marked as deleted can be restored using U - UN*DEL* records.  The
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.                                        - 12 -
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.           primary significance of marking records for deletion is that they
  1049.           will not ordinarily print out when reports, labels, or form
  1050.           letters are produced.  
  1051.           
  1052.                Do NOT mark records as DELETED as a means of maintaining a
  1053.           historical data base!  The first time a power failure occurs, you
  1054.           may be forced to rebuild a file or index which automatically and
  1055.           permanently deletes ALL records marked for deletion.  A better
  1056.           approach is to add a field to your data base which can be used to
  1057.           mark records as inactive or closed.
  1058.           
  1059.                Sometimes it is desirable to be able to mark a group of
  1060.           records as deleted in one pass rather than having to call up each
  1061.           record and mark it for deletion individually.  If you start
  1062.           WAMPUM with the developer's password, you may do this IF all of
  1063.           the following conditions are met.
  1064.           
  1065.                     (1)  The file must be indexed on a character field and
  1066.                          that field must be the current (first) index.
  1067.           
  1068.                     (2)  Record selection criteria must have been specified
  1069.                          using S - Select Utilities. It is a very good idea
  1070.                          to get a listing of records meeting the criteria
  1071.                          BEFORE actually marking the records *DELETED*!
  1072.           
  1073.                     (3)  Pick the M - Mark Records *DEL* option and when
  1074.                          prompted for the value to find, type an asterisk
  1075.                          and press <ENTER>.
  1076.           
  1077.                     (4)  You will be warned one last time that the selected
  1078.                          group of records are about to be marked *DELETED*.
  1079.                          Type Y to proceed.
  1080.           
  1081.           
  1082.           2.6   U - UNDELETing a Record
  1083.           
  1084.                To undelete records marked as deleted in any data base, that
  1085.           file must first be selected and cannot be empty.  Look at the
  1086.           bottom of the WAMPUM Main Menu to make sure that the file you
  1087.           want to use is already selected.  If not, it can be selected
  1088.           using the F - File Select option in developer mode only.
  1089.           
  1090.                If the file you wish to work with is selected, then you
  1091.           should also consider whether there is an index which you want to
  1092.           use for record retrieval.  If so, then this index must be
  1093.           selected as the lead index before you attempt to UNDELETE any
  1094.           records.  
  1095.           
  1096.                Once you are working with the correct file and index, then
  1097.           marking records UNDELETED is as simple as highlighting the U -
  1098.           UN*DEL* Records option and pressing <ENTER>. Or you may simply
  1099.           type a U while the Main System Menu is deleteed.
  1100.           
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.                                        - 13 -
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.                If you are not using indexes in conjunction with the file,
  1115.           then you will be prompted for the record number of the record you
  1116.           wish to undelete.  Simply type in the number desired and press
  1117.           the <ENTER> key.  
  1118.           
  1119.                If you are using an index in conjunction with the file, then
  1120.           the first index displayed at the bottom of the Main System Menu
  1121.           is considered the LEAD INDEX and will be used to retrieve
  1122.           records.  If this is not the index you wish to use for record
  1123.           retrieval, see the section on Select Utilities.
  1124.           
  1125.                When using an index, you will be prompted to enter a value
  1126.           for the field which is currently the LEAD INDEX.  You may enter
  1127.           all or part of a key, and WAMPUM will search for a match on the
  1128.           portion of the key entered.  Note that capitalization is critical
  1129.           in finding matches.  If a LASTNAME field in your data base
  1130.           contains an entry of SMITH and you enter Smith as the key, then
  1131.           WAMPUM will not find the SMITH you are looking for.
  1132.           
  1133.                Once you have entered either a record number or the key of
  1134.           the record to find, WAMPUM will search for the first match. 
  1135.           Assuming your application allows duplicate keys, there may be
  1136.           more than one match on a particular key, e.g. there may be a
  1137.           number of Smith's in your data base.  If the first entry
  1138.           displayed is not the Smith desired, then <PgDn> through the
  1139.           records until the correct record is retrieved. 
  1140.           
  1141.                If you are using a data base with too many fields to fit on
  1142.           one screen, note that WAMPUM will only display the first screen
  1143.           of data for each record while in UNDELETE mode.  
  1144.           
  1145.                If you skip past the record desired, you can also back up
  1146.           through the file in the order of the current key by pressing the
  1147.           <PgUp> key at any time.
  1148.           
  1149.                Once you find the record you wish to UNDELETE, then answer
  1150.           the restore prompt by entering a T for True or Y for Yes, and the
  1151.           record will be restored to the data base as an active record.
  1152.           
  1153.                You can abort any search by pressing <ESC>ape key.
  1154.           
  1155.                If you attempt to find a record which does not exist in the
  1156.           data base, WAMPUM will beep at you and prompt for another record
  1157.           to find.  When you have undeleted all the records desired, press
  1158.           <ESC>ape to exit to the Main System Menu.
  1159.           
  1160.                NOTE:  WAMPUM uses the same conventions as dBASE III insofar
  1161.           as deleted records are concerned.  Deleted records are not really
  1162.           deleted.  They are simply marked with an asterisk (*) in the
  1163.           first record position which signifies that they will be deleted
  1164.           the next time the file is rebuilt using the X - REBUILD/FileFix
  1165.           option.  At any time before you rebuild the file, any record
  1166.           marked as deleted can be restored using U - UN*DEL* records.  The
  1167.           down side of this is that once the X option has been run on a
  1168.           file, you can no longer UNDELETE records marked for deletion
  1169.           since they have been permanently deleted from the data base.
  1170.  
  1171.  
  1172.  
  1173.                                        - 14 -
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.           
  1181.                Sometimes it is desirable to be able to undelete a group of
  1182.           records in one pass rather than having to call up each record and
  1183.           restore it individually. If you start WAMPUM with the developer's
  1184.           password, you may do this IF all of the following conditions are
  1185.           met.
  1186.           
  1187.                     (1)  The file must be indexed on a character field and
  1188.                          that field must be the current (first) index.
  1189.           
  1190.                     (2)  Record selection criteria must have been specified
  1191.                          using S - Select Utilities. It is a very good idea
  1192.                          to get a listing of records meeting the criteria
  1193.                          BEFORE actually restoring the records!
  1194.           
  1195.                     (3)  Pick the U - UN*DEL* Records option and when
  1196.                          prompted for the value to find, type an asterisk
  1197.                          and press <ENTER>.
  1198.           
  1199.                     (4)  You will be warned one last time that the selected
  1200.                          group of records are about to be restored. Type Y
  1201.                          to proceed.
  1202.           
  1203.           
  1204.           2.7   P - PRINTing Records
  1205.           
  1206.                To print individual records from any data base, that file
  1207.           must first be selected and cannot be empty.  Look at the bottom
  1208.           of the WAMPUM Main Menu to make sure that the file you want to
  1209.           use has already been selected.  If not, it can be selected using
  1210.           the F - File Select option in developer mode only.  
  1211.           
  1212.                Also make certain that WAMPUM is configured to match the
  1213.           printer you currently are using.  This can be changed by
  1214.           selecting the # - PRINTER Config option in developer mode only.
  1215.           If no printer has been selected, WAMPUM will print in generic
  1216.           mode, meaning it outputs pure ASCII text.
  1217.           
  1218.                If the file you wish to work with is selected, then you
  1219.           should also consider whether there is an index which you want to
  1220.           use for record retrieval.  If so, then this index must be
  1221.           selected as the lead index before you PRINT any records.  
  1222.           
  1223.                Once you are working with the correct file and index, then
  1224.           PRINTing records is as simple as highlighting the P - Print
  1225.           Record(s) option and pressing <ENTER>. Or you may simply type a P
  1226.           while the Main System Menu is displayed.
  1227.           
  1228.                If you are not using indexes in conjunction with the file,
  1229.           then you will be prompted for the record number of the record you
  1230.           wish to retrieve.  Simply type in the number desired and press
  1231.           the <ENTER> key.  
  1232.           
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.                                        - 15 -
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.                If you are using an index in conjunction with the file, then
  1247.           the first index displayed at the bottom of the Main System Menu
  1248.           is considered the LEAD INDEX and will be used to retrieve
  1249.           records.  If this is not the index you wish to use for record
  1250.           retrieval, see the section on Select Utilities.
  1251.           
  1252.                When printing records with index retrieval, you will be
  1253.           prompted to enter a value for the field which is currently the
  1254.           LEAD INDEX.  You may enter all or part of a key, and WAMPUM will
  1255.           search for a match on the portion of the key entered.  Note that
  1256.           capitalization is critical in finding matches.  If a LASTNAME
  1257.           field in your data base contains an entry of SMITH and you enter
  1258.           Smith as the key, then WAMPUM will not find the SMITH you are
  1259.           looking for.
  1260.           
  1261.                Once you have entered either a record number or the key of
  1262.           the record to find, WAMPUM will search for the first match. 
  1263.           Assuming your application allows duplicate keys, there may be
  1264.           more than one match on a particular key, e.g. there may be a
  1265.           number of Smith's in your data base.  If the screen displayed is
  1266.           not the Smith desired, then <PgDn> through the records until the
  1267.           correct record is retrieved. 
  1268.           
  1269.                If you are using a data base with too many fields to fit on
  1270.           one screen, then only as many fields as will fit on a single
  1271.           screen will be displayed.  To get a print out of the entire
  1272.           record displayed plus the contents of any MEMO fields, answer the
  1273.           Print Record? prompt by typing a T or Y.  Make certain that your
  1274.           printer is turned ON and is ON LINE.
  1275.           
  1276.                If you skip past the record desired, you can also back up
  1277.           through the file in the order of the current key by pressing the
  1278.           <PgUp> key at any time.
  1279.           
  1280.                You can abort a PRINT records session by pressing the
  1281.           <ESC>ape key.
  1282.           
  1283.                If you attempt to find a record which does not exist in the
  1284.           data base, WAMPUM will beep at you and prompt for another record
  1285.           to find.  When you have printed all the records desired, press
  1286.           <ESC>ape to exit to the Main System Menu.
  1287.           
  1288.           
  1289.           2.8   X - REBUILD/FileFix
  1290.           
  1291.                Computers are very temperamental when it comes to
  1292.           electricity.  Power fluctuations will cause all sorts of
  1293.           undesired results when working with any data base.  In network
  1294.           environments, power is even more critical.  WAMPUM provides the
  1295.           X- REBUILD/FileFix option as a tool to assist in rebuilding data
  1296.           bases and indexes which typically have been corrupted by power
  1297.           problems.  This option obviously does not take the place of a
  1298.           reliable source of electricity.  If you are having to use this
  1299.           option frequently, then you should seriously consider an
  1300.           uninterruptible power supply if you value your data!  This option
  1301.           now provides three features to assist in file maintenance: (1)
  1302.  
  1303.  
  1304.  
  1305.                                        - 16 -
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.           data base file packing which automatically rebuilds active
  1313.           indexes as well, (2) memo file packing which compresses free-form
  1314.           text entered into memo fields, and (3) reindexing which rebuilds
  1315.           index files associated with a data base.
  1316.           
  1317.                (1)  The file packing option rebuilds the entire data base
  1318.           file and resets the end-of-file pointer which oftentimes is
  1319.           damaged by a power outage.  If there are active indexes, these
  1320.           are reindexed as well.  Be forewarned that this option
  1321.           automatically and permanently DELETES any records marked for
  1322.           deletion.  Make certain that you have UNDELETED any records you
  1323.           wish to preserve before executing the file rebuild option!
  1324.           
  1325.                (2)  Memo file packing is NOT included in the dBASE file
  1326.           packing algorithm hence packing a data base file does not affect
  1327.           the memo file at all.  For those new to the world of dBASE, you
  1328.           should be aware that any time a data base is created which
  1329.           includes one or more memo fields, a separate file automatically
  1330.           is created to store the contents of these fields.  It has the
  1331.           same file name as the main data base; however, the file extension
  1332.           is .DBT.  As you add data to memo fields, the actual text is
  1333.           stored in the .DBT file while a pointer (an address) is stored in
  1334.           the actual data base file itself.  Virtually any time a memo
  1335.           field is revised and expanded even slightly, the entire contents
  1336.           of that memo field is rewritten to the end of the .DBT file, and
  1337.           the pointer is adjusted accordingly.  Over time, the size of the
  1338.           .DBT file grows geometrically depending upon how often your memo
  1339.           fields are revised.  Previous copies of memo fields are never
  1340.           deleted from the .DBT file.  They merely occupy space.  To delete
  1341.           them, you must actually execute a dBASE COPY of the data base and
  1342.           then rename the file back to the original name.  WAMPUM's memo
  1343.           file packing option does this for you automatically.  Before
  1344.           executing this option, always make a backup of your original data
  1345.           base including the .DBT memo file.  Also make certain that your
  1346.           default drive has adequate space to house a temporary duplicate
  1347.           of both the .DBF and .DBT files which will be copied and then
  1348.           renamed!
  1349.           
  1350.                (3)  Reindexing is a tool which oftentimes will cure damage
  1351.           from power problems without actually rebuilding the data base
  1352.           itself.  The principal advantage to reindexing rather than file
  1353.           packing is that it does not delete records marked for deletion in
  1354.           the main data base.  If this is a concern, you may wish to try
  1355.           this option to repair damage before choosing file packing.  If
  1356.           you do select the file packing, reindexing is performed without
  1357.           selecting this option.
  1358.           
  1359.           
  1360.           2.9   S - SELECT Utilities
  1361.           
  1362.           2.9.1  Overview
  1363.           
  1364.                The Select Utilities option in WAMPUM provides end-user
  1365.           access to the two most critical elements in extracting data from
  1366.           a data base: record selection and sorting.  Sorting in WAMPUM is
  1367.  
  1368.  
  1369.  
  1370.  
  1371.                                        - 17 -
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.           handled through changing the lead index.  Thus, the Select
  1379.           Utilities option also provides the means for setting the primary
  1380.           index for record retrieval purposes.  
  1381.           
  1382.                Four other dBASE III functions are provided through the
  1383.           Select Utilities option: LIST FILE CONTENTS, to generate quick
  1384.           report listings with up to 9 fields; CHANGE DATA ENTRY MENUS,
  1385.           which allows a user to select from up to 10 different data entry
  1386.           menus; and BROWSE MODE, to scan through a group of records; and
  1387.           LIST STRUCTURE, which displays or prints a listing of the field
  1388.           structure of the data base file in use.  
  1389.           
  1390.                No User's Guide can do justice to the topic of Boolean logic
  1391.           which is record selection in both WAMPUM and dBASE III.  There
  1392.           are numerous books including a number of dBASE III primers which
  1393.           cover record selection in much more detail than what is addressed
  1394.           here.  Many are available without charge through your public
  1395.           library.  For anyone to get the most out of WAMPUM, you must
  1396.           master record selection since it is the critical element in
  1397.           identifying which records should and should not be extracted in
  1398.           reports, labels, and form letters.
  1399.           
  1400.           
  1401.           2.9.2  Record Selection Criteria
  1402.           
  1403.                Record Selection, which is the dBASE implementation of
  1404.           Boolean logic, is the process by which you tell the computer
  1405.           which records should and should not be extracted in producing
  1406.           reports, labels, and form letters.
  1407.           
  1408.                With the exception of logical fields, the syntax for record
  1409.           selection typically is FIELDNAME relational operator VALUE.  The
  1410.           syntax for logical fields is simpler.  Assuming a logical field
  1411.           exists in your data base called MARRIED, if you want to find all
  1412.           the records in which the MARRIED field is True, the Boolean
  1413.           expression is simply the field name itself: MARRIED.  If you want
  1414.           to find all those in which the MARRIED field is False, the
  1415.           correct expression is .NOT. MARRIED.  Any record selection
  1416.           expression can be linked to another expression with one of two
  1417.           connectors: .AND. or .OR.  The other cardinal rule is that
  1418.           expressions on both sides of the relational operator must be of
  1419.           the same type.  Thus, if a field is a character field then the
  1420.           value must be a character string.  If the field is a date field,
  1421.           then the value must be a date.  Finally, unlike dBASE III, memo
  1422.           fields can be searched for matches using record selection and
  1423.           should be treated as if they were character fields, i.e. enclose
  1424.           the search values in quotes just as you would a charcter string!
  1425.           
  1426.                Whenever you run a report, label, or form letter, WAMPUM
  1427.           always checks to see if Record Selection Criteria are in effect. 
  1428.           If so, it scans the data base for records whose field entries
  1429.           are TRUE when evaluated against the complete Record Selection
  1430.           Criteria then in effect.
  1431.           
  1432.           
  1433.           
  1434.  
  1435.  
  1436.  
  1437.                                        - 18 -
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.                WAMPUM currently supports eight relational operators:
  1445.           
  1446.                       OPERATOR     MEANING        
  1447.           
  1448.                           =        Equals; matches; begins with.
  1449.                          <>        Not equals.
  1450.                           >        Greater than; more than.
  1451.                          >=        Greater than or equal; at least.
  1452.                           <        Less than.
  1453.                          <=        Less than or equal; at most.
  1454.                           $        Is contained in.
  1455.                     .NOT. $        Is not contained in.
  1456.           
  1457.                The best way to master record selection is by reviewing some
  1458.           examples and finding one that closely matches what you want to
  1459.           do.  For this purpose, let us assume that you are working with a
  1460.           data base with the following file structure:
  1461.           
  1462.                FIELD NAME     FIELD TYPE     FIELD LEN      FIELD DEC
  1463.           
  1464.                LASTNAME           C             20              0
  1465.                ACCTNO             N              5              0
  1466.                ENTRYDT            D              8              0
  1467.                MARRIED            L              1              0
  1468.                COMMENTS           M             10              0
  1469.           
  1470.                Now let us assume that there are three records in the file
  1471.           with the following values:
  1472.           
  1473.                FIELD NAME     RECORD #1      RECORD #2      RECORD #3
  1474.           
  1475.                LASTNAME       Mundy          Johns          Johnston
  1476.                ACCTNO         12345          1234           123
  1477.                ENTRYDT        10/01/85       10/31/85       11/01/85
  1478.                MARRIED        .T.            .F.            .F.
  1479.                COMMENTS       None           None           None
  1480.           
  1481.                What follows are a number of examples showing the correct
  1482.           record selection syntax, what the expression means in plain
  1483.           English, and which records would be selected by the expression.
  1484.           
  1485.           
  1486.           Criteria: LAST NAME = Johns
  1487.           English:  Find all entries where the last name is Johns.
  1488.           Selected: No records.
  1489.           Comments: Not only will no records be selected but WAMPUM will
  1490.                     display a System Error forcing termination of the
  1491.                     program by typing Q.  FIELD NAMES are words of art
  1492.                     which must be spelled exactly as they appear in the
  1493.                     data base structure.  While LAST NAME is fine for
  1494.                     English, WAMPUM doesn't know LAST NAME from the MOON.
  1495.                     The correct field name is LASTNAME with no spaces!
  1496.                     Since LASTNAME is a character field, the value also
  1497.                     must be a character string which means it must be
  1498.                     enclosed in quotation marks.  Either error would have
  1499.                     triggered a System Error.  Currently, there is no way
  1500.  
  1501.  
  1502.  
  1503.                                        - 19 -
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.                     to check for correct syntax before you actually run a
  1511.                     report, label, or form letter.  Then it's too late!
  1512.           
  1513.           Criteria: LASTNAME="Johns"
  1514.           English:  Find all entries where the LASTNAME begins with Johns.
  1515.           Selected: Records 2 and 3.
  1516.           Comments: Note that EQUALS is not pure equivalency in WAMPUM, but
  1517.                     more accurately means "begins with."  If you want exact
  1518.                     equivalence, fill out the field with enough spaces to
  1519.                     assure that the match will force equivalence, e.g.
  1520.                     LASTNAME="Johns  " would select only Record 2.
  1521.           
  1522.           Criteria: LASTNAME="Johns" .AND. ACCTNO=123
  1523.           English:  Find all entries where LASTNAME begins with Johns AND
  1524.                     the account number is 123.
  1525.           Selected: Record 3.
  1526.           Comments: For every rule, there is an exception. Equals means
  1527.                     exactly equals with numeric fields.  Here the account
  1528.                     number is numeric while the LASTNAME field is not.  
  1529.                     Note that BOTH expressions must be true for a record
  1530.                     to qualify since the expressions are joined with .AND.
  1531.                     Note also that the character string value must be in
  1532.                     quotes to match the character field LASTNAME while the
  1533.                     numeric value is NOT in quotes to match the numeric
  1534.                     field ACCTNO.
  1535.           
  1536.           Criteria: LASTNAME="Mundy" .AND. LASTNAME="Johns"
  1537.           English:  Find all entries where LASTNAME is Mundy and Johns.
  1538.           Selected: No records.
  1539.           Comments: Pure English will sometimes get you into trouble.
  1540.                     A common beginner's mistake is to mix up .AND. and
  1541.                     .OR.  Remember: .AND. means BOTH expressions must
  1542.                     be True.  .OR. means if EITHER is True.  Here, no
  1543.                     one has a LASTNAME of Mundy AND Johns.  All entries
  1544.                     have a LASTNAME of Mundy OR Johns.
  1545.           
  1546.           Criteria: MARRIED .OR. LASTNAME="Johns  "
  1547.           English:  Find all entries where person is married or LASTNAME
  1548.                     is equal to Johns.
  1549.           Selected: Records 1 and 2.
  1550.           Comments: When expressions are joined by .OR. then if either
  1551.                     expression is true, the record qualifies.  Thus, record
  1552.                     1 qualified because the MARRIED field is True and
  1553.                     record 2 qualified because of the LASTNAME match.
  1554.           
  1555.           Criteria: .NOT. MARRIED .AND. ENTRYDT>=CTOD("10/31/86")
  1556.           English:  Find all the unmarried people with an entry date of at
  1557.                     least October 31, 1986.
  1558.           Selected: Records 2 and 3.
  1559.           Comments: The connecter is .AND. so both expressions must be
  1560.                     true. Since the MARRIED field is false in both record
  1561.                     2 and 3 and since the ENTRYDT is at least 10/31/86,
  1562.                     they both would be output.  Note that the VALUE type
  1563.                     must match the field type with the DATE field.  There
  1564.                     is no direct way to enter a date in dBASE.  Thus, you
  1565.                     must enter the character string "10/31/86" and then
  1566.  
  1567.  
  1568.  
  1569.                                        - 20 -
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.                     convert it to a DATE with the character-to-date
  1577.                     function: CTOD().
  1578.           
  1579.           Criteria: ENTRYDT>=CTOD("10/01/86").AND.ENTRYDT<=CTOD("10/31/86")
  1580.           English:  Find all of the October, 1986 entries.
  1581.           Selected: Records 1 and 2.
  1582.           Comments: Here we are using a range of dates to select a month's
  1583.                     worth of entries.  Note that spacing between text is
  1584.                     optional.  Both expressions must be true for a match.
  1585.                     DATE fields must have DATE values.  CTOD() does it.
  1586.           
  1587.           Criteria: "This is a test"$COMMENTS
  1588.           English:  Find every record in which the text "This is a test"
  1589.                     appears in the COMMENTS memo field.
  1590.           Selected: Don't know.  See below.
  1591.           Comments: The $ operator is one of Boolean logic's most powerful
  1592.                     tools since it automatically searches TEXT STRINGS for
  1593.                     a match anywhere in the string.  It can be especially
  1594.                     helpful for use with fields in which a word may appear
  1595.                     at any place in a lengthy string of text.  For purposes
  1596.                     of searches, MEMO fields are treated by WAMPUM as text
  1597.                     strings.  Thus, you can search ANY memo field with the
  1598.                     logic outlined above.  To negate the expression, i.e.
  1599.                     "This is a test" is NOT contained in the MEMO field,
  1600.                     the correct syntax is .NOT."This is a test"$COMMENTS.
  1601.                     In this case, we didn't specify the contents of the 
  1602.                     MEMO field in developing the example.  Thus, there is
  1603.                     no way to tell if the text was found or not.
  1604.           
  1605.                                  WAMPUM'S SELECT ASSIST
  1606.           
  1607.                For those experiencing problems in mastering dBASE Boolean
  1608.           syntax but who have mastered Boolean selection theory, WAMPUM
  1609.           provides a helping hand: SELECT ASSIST.  By entering an asterisk
  1610.           (*) as the first character in the Record Selection field or
  1611.           whenever you pick the LIST FILE CONTENTS option when no selection
  1612.           criteria are in effect, SELECT ASSIST springs in to action.  
  1613.           
  1614.                SELECT ASSIST is a menu-driven record selection tool similar
  1615.           to that found in many data base systems such as dBASE III Plus. 
  1616.           It permits a user to enter up to 10 record selection criteria
  1617.           using a 4-step menu process.  As indicated earlier, it cannot
  1618.           replace the human brain in figuring out which records you want to
  1619.           work with, but it can help you master dBASE selection syntax.
  1620.           
  1621.                                    FIELDNAME SELECTION
  1622.           
  1623.                Once SELECT ASSIST is started, it will display a screen with
  1624.           the name of the first field in the active data base.  Step 1 is
  1625.           to identify the field involved in making your selection of
  1626.           records.  If you don't remember the field names in the data base,
  1627.           simply press the <Dn> and <Up> cursor keys to "thumb through" the
  1628.           field names.  When you find the one you want, press <ENTER>.  
  1629.           
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635.                                        - 21 -
  1636.  
  1637.  
  1638.  
  1639.  
  1640.  
  1641.  
  1642.                If you already know the field name and there are a lot of
  1643.           them in your database, you may find it more convenient just to
  1644.           type several of the beginning characters of the field name. 
  1645.           SELECT ASSIST will begin searching for a matching field name as
  1646.           soon as you type a letter between A and Z.  If it finds no match,
  1647.           it will beep and redisplay the first field name in the data base.
  1648.           Since several fields obviously can have the same beginning
  1649.           letters, you may have to type several letters of the field name
  1650.           for SELECT ASSIST to find the field you're looking for.  Once the
  1651.           field name appears that you want, press <ENTER> to continue.
  1652.           
  1653.                It should be noted that once you have pressed <ENTER>, it is
  1654.           too late to change your mind about any previous selection you
  1655.           have made.  If you have made a mistake, your only option is to
  1656.           start over by pressing <ESC>ape to exit.  HINT: Be sure of your
  1657.           choice before you press the <ENTER> key!  If you do ESCape from
  1658.           SELECT ASSIST, you also will need to ESCape from the LIST FIELDS
  1659.           screen if you picked LIST FILE CONTENTS.  Otherwise, your list
  1660.           will include data on all records in your data base.
  1661.           
  1662.                               RELATIONAL OPERATOR SELECTION
  1663.           
  1664.                After selecting a field name, you then must choose a
  1665.           RELATIONAL OPERATOR telling WAMPUM what sort of comparison you
  1666.           wish to make against this field.  The default is EQUALS.  You may
  1667.           "thumb through" the choices by pressing the <Dn> or <Up> cursor
  1668.           keys.  Depending upon the field type of the field name specified,
  1669.           the relational operator selections will vary.  Display the
  1670.           operator desired, then press <ENTER> to proceed.
  1671.           
  1672.                                    VALUE SPECIFICATION
  1673.           
  1674.                Once you have specified the relational operator, you next
  1675.           must tell SELECT ASSIST what VALUE for this field you want to
  1676.           find.  Again, depending upon the field type, your options in
  1677.           specifying a value may be limited.  For example, if the field is
  1678.           a date field, the VALUE must also be a date.  With a logical
  1679.           field, there is no value specification.  Character fields require
  1680.           the entry of text without surrounding quotation marks.  Press the
  1681.           <ENTER> key once you have specified the value desired.
  1682.           
  1683.           
  1684.           
  1685.                                    CONNECTOR SELECTION
  1686.           
  1687.                Connector selection allows you to indicate how this
  1688.           selection should be linked to the next selection, if any.  The
  1689.           choices are listed by using the <Dn> and <Up> cursor keys. You
  1690.           may choose AND, OR, or NO CONNECTOR.  If you choose NO CONNEC-
  1691.           TOR, SELECT ASSIST assumes you are finished.  Specifying either
  1692.           of the other choices by pressing <ENTER> takes you to the next
  1693.           line to enter a second selection criteria beginning with another
  1694.           field name.  
  1695.           
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.                                        - 22 -
  1702.  
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.                Once you have entered all of the selection criteria desired,
  1709.           press the <PgDn> key in the CONNECTOR SELECTION field to tell
  1710.           SELECT ASSIST you are finished.  You may also specify NO CONNEC-
  1711.           TOR and press <ENTER> which has the same effect.  If you
  1712.           accidentally press <ENTER> to move to the next line with a
  1713.           connector of AND or OR, you may still end processing of SELECT
  1714.           ASSIST by pressing the <PgDn> key in the FIELD NAME position.  In
  1715.           this case, SELECT ASSIST assumes you wanted to use only those
  1716.           selection criteria on the lines above the current line.
  1717.           
  1718.           
  1719.           2.9.3  Listing File Contents
  1720.           
  1721.                Many times there is a need to produce a "quick and dirty"
  1722.           report which lists certain fields of information on a certain
  1723.           group of records in the data base.  The List File Contents option
  1724.           in conjunction with a previously specified Record Selection
  1725.           Criteria satisfies this need by simulating the dBASE LIST
  1726.           command.  
  1727.           
  1728.                If the List File Contents option is marked True, WAMPUM
  1729.           first will display the SELECT ASSISTANT previously described if
  1730.           no record selection criteria are in effect.  After specifying
  1731.           record selection criteria, WAMPUM then will display a screen
  1732.           asking the user to identify the fields to be listed.  The user
  1733.           should type a number between 1 and 9 beside each field which
  1734.           should be listed.  No number can be used twice!  If a MEMO field
  1735.           is to be included in the listing, it should be the field with
  1736.           either the highest or lowest number to assure that it prints in
  1737.           either the far right column or the far left column of the
  1738.           listing.  
  1739.           
  1740.                Pressing <PgDn> moves the user to a screen which prompts for
  1741.           (1) whether to print the listing, (2) whether to output all
  1742.           records (i.e., override record selection criteria then in
  1743.           effect), and (3) whether to output records marked for deletion. 
  1744.           When these prompts are answered, WAMPUM will produce the list
  1745.           with field headings either on the screen or on the printer.  If
  1746.           the total width of the fields specified for the listing exceeds
  1747.           the screen width or current printer width, the listing will be
  1748.           wrapped to the next line.  At the end of the listing will be a
  1749.           summary of the record selection criteria then in effect.
  1750.           
  1751.           
  1752.           2.9.4  Changing Current Data Entry Menu
  1753.           
  1754.                In addition to its standard data entry menu, WAMPUM provides
  1755.           the capacity for creating up to 9 customized data entry menus to
  1756.           match different data entry stages for any given application.  The
  1757.           number of menus available to the end-user are specified by the
  1758.           developer in creating an application.
  1759.           
  1760.                You may change data entry menus at any time by following
  1761.           these simple steps.  Access the S - Select Utilities screen from
  1762.           the Main System Menu.  Change the Change Current Menu field to T
  1763.           and press <PgDn>.  A listing of the available menus will be
  1764.  
  1765.  
  1766.  
  1767.                                        - 23 -
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774.           displayed.  Simply type the number corresponding to the menu you
  1775.           want to use.  You then will be returned to the Main System Menu. 
  1776.           Until you change menus again, this new data entry menu will
  1777.           appear whenever you Add, Edit, or Display Records.
  1778.           
  1779.           
  1780.           2.9.5  Picking the Lead Index
  1781.           
  1782.                Files can only be accessed and output can only be produced
  1783.           in the order of one index at a time even though WAMPUM
  1784.           automatically updates up to 7indexes as you add and modify
  1785.           entries in the file.  
  1786.           
  1787.                The LEAD INDEX is always the FIRST index displayed at the
  1788.           bottom of the WAMPUM Main System Menu.  If you want to retrieve
  1789.           records in some order other than what the current LEAD INDEX
  1790.           would provide, then you can change the LEAD INDEX.
  1791.           
  1792.                Similarly, all output from WAMPUM including REPORTS, LABELS,
  1793.           and FORM LETTERS is produced in the order of the LEAD INDEX.  If
  1794.           you want the output ordered differently, then you must change the
  1795.           LEAD INDEX before generating the report, labels, or form letters
  1796.           unless you are using the W - WAMPUM PreFormat option. 
  1797.           
  1798.                To change the LEAD INDEX, select the S - Select Utilities
  1799.           option from the Main System Menu by typing an S or highlighting
  1800.           the option and pressing the <ENTER> key.  Enter any selection
  1801.           criteria desired then press <ENTER> to move to the field which
  1802.           asks Change Lead Index.  Change the value of the field from False
  1803.           to True by typing either a T or Y.  Assuming you have more than
  1804.           one index in use, a list of available indexes then will be
  1805.           displayed.  Just enter the number of the one which you want to
  1806.           designate as the LEAD INDEX.
  1807.           
  1808.                Always remember to check the LEAD INDEX before producing
  1809.           output from your file to assure that it is set as you desire.
  1810.           
  1811.           
  1812.           2.9.6  Setting Browse Mode ON
  1813.           
  1814.                WAMPUM implements dBASE III's powerful BROWSE command in a
  1815.           slightly different way.  By setting BROWSE Mode ON by specifying
  1816.           T or Y to the prompt in the Select Utilities screen, WAMPUM uses
  1817.           a two-step process for EDITing, DISPLAYing, DELETing, and
  1818.           UNDELETing records.
  1819.           
  1820.                The user first will be prompted for the key field value to
  1821.           find.  Then, instead of the usual data entry display, the user
  1822.           first will be presented with a table of the first twenty records
  1823.           in key order beginning with the first matching key value.  WAMPUM
  1824.           displays as many fields from the data base for each record as
  1825.           will fit on a single line of the screen.
  1826.           
  1827.                Within this display, the user can move UP and DOWN through
  1828.           the records with the UP and DOWN cursor keys.  The user can
  1829.           request the next twenty records beginning with the last record
  1830.  
  1831.  
  1832.  
  1833.                                        - 24 -
  1834.  
  1835.  
  1836.  
  1837.  
  1838.  
  1839.  
  1840.           currently displayed by pressing the <PgDn> key.  Browse also
  1841.           permits the user to move UP a single record by pressing <PgUp>. 
  1842.           If the record is found for which you are searching, then simply
  1843.           highlight that option and press the <ENTER> key.  This then
  1844.           triggers the usual WAMPUM data entry screen.  If no record is
  1845.           found for which you desire to move to the full data entry screen,
  1846.           then two choices are available.  Pressing <ESC> will ABORT the
  1847.           BROWSE session and return you to the Main System Menu.  Pressing
  1848.           the <SPACE BAR> or any other key not previously mentioned will
  1849.           allow you to enter a new record key value and commence another
  1850.           search.
  1851.           
  1852.                BROWSE mode is particularly useful in situations in which
  1853.           there may be multiple entries with a similar key value, i.e. a
  1854.           number of entries with a LASTNAME of Smith.  BROWSE permits you
  1855.           to examine the partial contents of 20 records at a time in order
  1856.           to identify the exact record with which to work.  Note that you
  1857.           cannot actually change any data while in the BROWSE mode.  You
  1858.           must move to the actual data entry screen to do this.
  1859.           
  1860.                If a record has been marked for deletion, that entry will
  1861.           show an asterisk (*) as the first character of the line. 
  1862.           Otherwise, the first character position is always blank.
  1863.           
  1864.                Once the full data entry mode has been triggered by pressing
  1865.           the <ENTER> key, the user still has the ability to move through
  1866.           the data base with either <PgDn> or <PgUp>.  At this juncture, it
  1867.           is necessary to return to the Main System Menu before the BROWSE
  1868.           mode is reinitiated.
  1869.           
  1870.           
  1871.           2.9.7  Listing the File Structure
  1872.           
  1873.                Particularly in developing reports, labels, and form
  1874.           letters, it is helpful to have a listing of the structure of the
  1875.           data base file in use.  The last option on the Select Utilities
  1876.           screen permits a user to request this listing.  If the prompt is
  1877.           answered with Y or T, then WAMPUM will ask whether you want the
  1878.           listing printed as opposed to displayed.  Typing T or Y at the
  1879.           Printed? option will provide a printed listing.  Pressing <ESC>
  1880.           will abort the listing entirely.  Pressing <PgDn> or <ENTER> will
  1881.           display the file structure on the screen.
  1882.                     
  1883.           
  1884.           
  1885.           2.10  R - REPORTS Generation
  1886.           
  1887.                The R - Reports option allows you to run existing dBASE III
  1888.           report formats and create new ones.  Creation of new reports is
  1889.           covered in the Developer's section of this User's Guide.
  1890.           
  1891.                Before selecting the Reports option, you already should have
  1892.           used the Select Utilities option to enter Record Selection
  1893.           Criteria and to specify the Lead Index for report output.  If you
  1894.           did not do so, simply press <ESC>ape to return to the Main Menu.
  1895.           
  1896.  
  1897.  
  1898.  
  1899.                                        - 25 -
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.                When you select the Reports option, a listing of report
  1907.           forms in the default directory will be displayed.  You then are
  1908.           prompted to enter the name of the report form you wish to run. 
  1909.           Type in the file name EXACTLY as it appears in the directory
  1910.           listing.  Do NOT include the .FRM file extension.
  1911.           
  1912.                There also is a field which allows you to specify the
  1913.           PRINTER FONT to be used if the report is to be printed.  If a
  1914.           report is to be printed on regular 8-1/2 x 11 inch paper using 10
  1915.           pitch type, then NO font number needs to be entered.  If your
  1916.           printer supports smaller fonts thereby enabling production of
  1917.           wider reports or reports turned sideways, enter a number
  1918.           corresponding to the font desired.  See the # - Printer Config
  1919.           section of the Developer's section of this User's Guide for more
  1920.           information.
  1921.           
  1922.                Once you have entered a font or pressed the <ENTER> key, the
  1923.           Printer Selection Screen will appear.  It permits you to specify
  1924.           (1) whether to Print or Display the Report, (2) whether to
  1925.           override the Record Selection Criteria and output ALL records,
  1926.           and (3) whether to output records marked for deletion which
  1927.           typically are not output. See the Printer Selection Screen
  1928.           section of this User's Guide for more information on these
  1929.           options.
  1930.           
  1931.           
  1932.           2.11  L - LABELS Production
  1933.           
  1934.                The L - Labels option allows you to run existing dBASE III
  1935.           label formats and create new ones.  Creation of new labels is
  1936.           covered in the Developer's section of this User's Guide.
  1937.           
  1938.                Before selecting the Labels option, you already should have
  1939.           used the Select Utilities option to enter Record Selection
  1940.           Criteria and to specify the Lead Index for label output.  If you
  1941.           did not do so, simply press <ESC>ape to return to the Main Menu.
  1942.           
  1943.                When you select the Labels option, a listing of label forms
  1944.           in the default directory will be displayed.  You then are
  1945.           prompted to enter the name of the label form you wish to run. 
  1946.           Type in the file name EXACTLY as it appears in the directory
  1947.           listing.  Do NOT include the .LBL file extension.
  1948.           
  1949.                There also is a field which allows you to specify the
  1950.           PRINTER FONT to be used if the labels are to be printed.  If the
  1951.           labels are to be printed using standard 10 pitch type, then NO
  1952.           font number needs to be entered.  If you will be producing labels
  1953.           on a laser printer, then FONT 7 should be selected.  See the # -
  1954.           Printer Config section of the Developer's section of this User's
  1955.           Guide for more information.
  1956.           
  1957.                Once you have entered a font or pressed the <ENTER> key, the
  1958.           Printer Selection Screen will appear.  It permits you to specify
  1959.           whether to Print or Display the Labels, whether to override the
  1960.           Record Selection Criteria and output ALL records, and whether to
  1961.  
  1962.  
  1963.  
  1964.  
  1965.                                        - 26 -
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.  
  1972.           output labels for records marked for deletion. These typically
  1973.           are not output. See the Printer Selection Screen section of this
  1974.           User's Guide for more information on these options.
  1975.           
  1976.           
  1977.           2.12  T - FORM LETTER Generation
  1978.           
  1979.                The T - Form Letters option allows you to run existing
  1980.           WAMPUM form letters and create new ones.  Creation of new form
  1981.           letters is covered in the Developer's section of this User's
  1982.           Guide.
  1983.           
  1984.                Before selecting the Form Letters option, you already should
  1985.           have used the Select Utilities option to enter Record Selection
  1986.           Criteria and to specify the Lead Index for form letter output. 
  1987.           If you did not do so, simply press <ESC>ape to return to the Main
  1988.           Menu. The one exception to this is where you wish to generate a
  1989.           form letter using an indexed key to find a single record.  In
  1990.           this case, make certain that no Record Selection Criteria are in
  1991.           effect.  Then select the T - Form Letters option.  After
  1992.           selecting a form letter file as outlined below, you will be
  1993.           prompted to enter the key value to find using the primary index
  1994.           then in effect.
  1995.           
  1996.                When you select the Form Letters option, a listing of form
  1997.           letter files in the default directory will be displayed.  Note
  1998.           that a form letter file is a standard .DBF file except that its
  1999.           file name begins with T-.  You then are prompted to enter the
  2000.           name of the form letter form you wish to run.  Type in the file
  2001.           name EXACTLY as it appears in the directory listing.  Do NOT
  2002.           include the .DBF file extension.
  2003.           
  2004.                There also is a field which allows you to specify the
  2005.           PRINTER FONT to be used if the form letters are to be printed. 
  2006.           If the form letters are to be printed using standard 10 pitch
  2007.           type, then NO font number needs to be entered.  See the # -
  2008.           Printer Config section of the Developer's section of this User's
  2009.           Guide for more information.
  2010.           
  2011.                Once you have entered a font or pressed the <ENTER> key, the
  2012.           Printer Selection Screen will appear unless there are no record
  2013.           selection criteria in effect.  In the latter case, you will be
  2014.           prompted to enter the record key to find using the lead index
  2015.           then in effect.  When the printer screen displays, it permits you
  2016.           to specify whether to Print or Display the Form Letters, whether
  2017.           to override the Record Selection Criteria and output ALL records,
  2018.           and whether to output form letters for records marked for
  2019.           deletion. These typically are not output. See the Printer
  2020.           Selection Screen section of this User's Guide for more
  2021.           information on these options.
  2022.           
  2023.           
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030.  
  2031.                                        - 27 -
  2032.  
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038.           2.13  W - WAMPUM Preformatted Output
  2039.           
  2040.                The WAMPUM Preformatted Output option allows you to run up
  2041.           to 80 predefined Reports, Labels, and Form Letters each with
  2042.           predefined selection criteria, sort order, and even a related
  2043.           file for table lookup if desired.  This is perhaps WAMPUM's most
  2044.           powerful feature and is NOT available in dBASE III at all.
  2045.           
  2046.                Before this option is available, the WAMPUM master file must
  2047.           be created and appropriate entries must be made for the pre-
  2048.           defined output desired.  This is covered in the Developer's
  2049.           section of this User's Guide.
  2050.           
  2051.                Assuming that this already has been done, then all that is
  2052.           necessary to run WAMPUM Preformatted Output is to select the W -
  2053.           WAMPUM PreFormat option from the Main System Menu.  A two-column
  2054.           listing of reports, labels, and form letters available for
  2055.           automatic production then will be displayed.  Following the
  2056.           description of each item will be a single letter (R, L, or T)
  2057.           indicating whether the output is a Report, Label, or Form Letter.
  2058.           Mark the reports, labels, and form letters you wish to produce
  2059.           with a T or Y in the logical field provided to indicate which
  2060.           should be run.
  2061.           
  2062.                You will notice at the bottom of the screen a range of dates
  2063.           is specified.  The default range of dates is the beginning and
  2064.           ending of the current month unless today's date is less than the
  2065.           6th of the month.  In this case, the default is the beginning and
  2066.           ending dates of last month.  Most folks produce monthly reports
  2067.           for a prior month at the beginning of the next month so WAMPUM
  2068.           saves you a little typing.
  2069.           
  2070.                The range of dates can be changed by you to any dates
  2071.           desired although the first date should always be less than or
  2072.           equal to the second date.  The range of dates are automatically
  2073.           used for any preformatted reports, labels, or form letters in
  2074.           which the developer wanted the end-user to have the flexibility
  2075.           to select the time period for the report at the time it was
  2076.           produced.  
  2077.           
  2078.                For instance, using the data base example outlined earlier
  2079.           to show how to select records, let us suppose that the developer
  2080.           had predefined a report which would output certain information
  2081.           about new entries covering a period of entry dates.  If that
  2082.           report were run as a WAMPUM Preformatted Report, you then could
  2083.           specify the range of entry dates at run time rather than the
  2084.           developer constantly having to update the master record.  This
  2085.           also frees you from having to master Boolean logic overnight!
  2086.           
  2087.                The only rule to remember is that the DATE RANGE specified
  2088.           applies to ALL output produced during a single run.  Thus, if you
  2089.           had two preformatted reports for which you wanted different date
  2090.           ranges on output, then you would have to run one report with one
  2091.           date range.  Then select the WAMPUM Preformatted option again,
  2092.           change the date range, and run the other report.
  2093.           
  2094.  
  2095.  
  2096.  
  2097.                                        - 28 -
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.                Once you have entered your choices, the Printer Selection
  2105.           Screen will appear.  It permits you to specify (1) whether to
  2106.           Print or Display the output, (2) whether to override the Record
  2107.           Selection Criteria and output ALL records, and (3) whether to
  2108.           generate output for records marked for deletion. These typically
  2109.           are not output. See the Printer Selection Screen section of this
  2110.           User's Guide for more information on these options.
  2111.           
  2112.           
  2113.           2.14  Printer Selection Screen
  2114.           
  2115.           2.14.1  Printed Output
  2116.           
  2117.                Whenever you run a Report, Label, Form Letter, or WAMPUM
  2118.           Preformatted Output, you will see the Printer Selection Screen
  2119.           which lets you choose whether to PRINT or DISPLAY the
  2120.           information.
  2121.           
  2122.                If you want the OUTPUT printed, type a T or Y at the prompt.
  2123.           
  2124.           
  2125.           2.14.2  Output All Records
  2126.           
  2127.                If record selection criteria are in effect, you also will be
  2128.           asked whether you want to override those criteria and OUTPUT
  2129.           information on ALL records in the data base.
  2130.           
  2131.                If you DO want to OVERRIDE the record selection criteria in
  2132.           effect, then change the default entry to T or Y.
  2133.           
  2134.           
  2135.           2.14.3  Output Records Marked for Deletion
  2136.           
  2137.                You also will be asked whether to output information on
  2138.           records marked for DELETION.  The default is No.
  2139.           
  2140.                If you want DELETED records included in your output, change
  2141.           the entry to T or Y.
  2142.           
  2143.           
  2144.           2.15  On-Line HELP
  2145.           
  2146.                The best way to learn WAMPUM is to read this User's Guide
  2147.           cover to cover.  Most folks won't do that so WAMPUM provides some
  2148.           of what is contained in the User's Guide in HELP screens keyed to
  2149.           where you are in the program.
  2150.           
  2151.                To access the HELP screens, press the F1 function key at any
  2152.           time.  Depending upon where you are in WAMPUM, a screen of HELP
  2153.           will be displayed.  Simply press the <ENTER> key to return to
  2154.           where you were.
  2155.           
  2156.                Every choice from the WAMPUM Main System Menu has an
  2157.           intermediate screen which gives you a chance to change your
  2158.           mind.  It is on this second screen after picking any option that
  2159.  
  2160.  
  2161.  
  2162.  
  2163.                                        - 29 -
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.           the most detailed HELP is available.  Once you have read the HELP
  2171.           message and returned to where you were, you can return to the
  2172.           Main System Menu simply by pressing the <ESC>ape key.
  2173.           
  2174.                In short, you can get HELP on any WAMPUM topic without
  2175.           actually having to complete execution of that particular
  2176.           function.
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.  
  2186.  
  2187.  
  2188.  
  2189.  
  2190.  
  2191.  
  2192.  
  2193.  
  2194.  
  2195.  
  2196.  
  2197.  
  2198.  
  2199.  
  2200.  
  2201.  
  2202.  
  2203.  
  2204.  
  2205.  
  2206.  
  2207.  
  2208.  
  2209.  
  2210.  
  2211.  
  2212.  
  2213.  
  2214.  
  2215.  
  2216.  
  2217.  
  2218.  
  2219.  
  2220.  
  2221.  
  2222.  
  2223.  
  2224.  
  2225.  
  2226.  
  2227.  
  2228.  
  2229.                                        - 30 -
  2230.  
  2231.  
  2232.  
  2233.  
  2234.  
  2235.  
  2236.           3  Developer Functions
  2237.           
  2238.           3.1   Creating A New Application
  2239.           
  2240.           3.1.1   Overview of Application Development Strategy
  2241.           
  2242.                As with any application development, the best advice in
  2243.           starting a new project is TURN OFF THE COMPUTER and use your head
  2244.           for a while to figure out what you want to do.  What data input
  2245.           will you need to capture to get the output desired?
  2246.           
  2247.                Once you know what you want, then some familiarity with
  2248.           WAMPUM's structure will help.  WAMPUM is designed to be stored in
  2249.           a directory from which it can be run regardless of the active
  2250.           default directory on your hard disk.  This means it should be in
  2251.           a directory supported by the current DOS PATH.
  2252.           
  2253.                The cardinal rule in using WAMPUM is a simple one: separate
  2254.           applications should be created in separate subdirectories which
  2255.           are NOT in the DOS PATH.  There are two reasons for this. First,
  2256.           WAMPUM creates a number of supporting files for each application.
  2257.           If you create more than one application in a given subdirectory
  2258.           then these supporting files will not be available for use in both
  2259.           applications.  Second, the reason for not building applications
  2260.           in a directory that is part of the DOS PATH is because WAMPUM
  2261.           accesses files on the hard disk using the same PATH command that
  2262.           DOS uses. If you build an application in a directory which is
  2263.           part of the PATH, then WAMPUM's supporting files may
  2264.           unintentionally spill over into other WAMPUM applications as you
  2265.           begin building them.
  2266.           
  2267.                Each WAMPUM application typically will include a main file,
  2268.           perhaps a related file, several indexes, and numerous reports,
  2269.           labels, and forms.  In addition, each time you run WAMPUM in a
  2270.           new directory, it automatically builds some supporting files for
  2271.           that application.  These include EDIT.DBF (which is used to store
  2272.           the edit checks for a particular application), KEYS.DBF (which is
  2273.           used to store any keyboard macros for a particular application),
  2274.           MENUS.DBF (which is used to store up to 9 data entry screen
  2275.           formats) and, if requested, WAMPUM.DBF (which is used to build a
  2276.           library of preformatted reports, labels, and form letters which
  2277.           can be run without users having to master Boolean logic and
  2278.           sorting rules).  For the same reason stressed above, you should
  2279.           not run WAMPUM in a directory which is part of the DOS PATH for
  2280.           it will build these supplemental files which may then inadver-
  2281.           tently spill over into other applications on the hard disk!
  2282.           
  2283.                You may be wondering why anyone would want a DOS PATH if it
  2284.           causes all these problems.  The answer is that the DOS PATH gives
  2285.           WAMPUM the capability to share data stored in other directories
  2286.           without having a duplicate copy in the current directory. For
  2287.           example, the printer configuration files can be stored in the
  2288.           same directory as WAMPUM yet they may be used from any directory.
  2289.           Similarly, in certain situations with very large data bases which
  2290.           must be shared by several applications, it may be desirable to
  2291.           move the shared data base itself into a directory which is part
  2292.  
  2293.  
  2294.  
  2295.                                        - 31 -
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.           of the DOS PATH so that it can be used in multiple applications
  2303.           without having to duplicate the data.   These are considerations
  2304.           you would want to think through while the computer is turned OFF!
  2305.           
  2306.                What follows in the subsequent sections is the STEP-by-STEP
  2307.           process for building a new WAMPUM application.  In order to
  2308.           simplify the presentation, it helps to use a sample application.
  2309.           We will assume that the application to be built is based upon the
  2310.           data base outlined previously.  The structure of that file is
  2311.           repeated here for the sake of clarity:
  2312.           
  2313.                FIELD NAME     FIELD TYPE     FIELD LEN      FIELD DEC
  2314.           
  2315.                LASTNAME           C             20              0
  2316.                ACCTNO             N              5              0
  2317.                ENTRYDT            D              8              0
  2318.                MARRIED            L              1              0
  2319.                COMMENTS           M             10              0
  2320.           
  2321.           
  2322.           3.1.2   Create A New SubDirectory
  2323.           
  2324.                The first step in building a new WAMPUM application is to
  2325.           create a new subdirectory on the disk to house the information.
  2326.           You must be at the DOS prompt to perform these steps.  
  2327.           
  2328.                We recommend you name the subdirectory using a single word
  2329.           of up to 8 characters in length with no embedded spaces or
  2330.           punctuation.  To keep things simple, let's name it SAMPLE here.
  2331.           If you want to follow along, type the following commands. Press
  2332.           the <ENTER> key after typing each command.
  2333.           
  2334.                               PROMPT $P$G
  2335.                               CD \ 
  2336.                               MD SAMPLE
  2337.                               CD \SAMPLE
  2338.           
  2339.                The commands above (1) change the DOS prompt to assure that
  2340.           you'll know the subdirectory in which you are working, (2) move
  2341.           you to the "root" (top) directory, (3) make a new directory named
  2342.           "SAMPLE", and (4) move you to the new "SAMPLE" directory.  If you
  2343.           are working on the C: drive, the prompt on your screen after
  2344.           issuing the above commands should be C:\SAMPLE>.
  2345.           
  2346.                You now are ready to start up WAMPUM.  Since you are
  2347.           building a new application, you will want to use DEVELOPER MODE.
  2348.           This means you need to include the developer password as shown
  2349.           below.  Unless you need to force WAMPUM into monochrome mode,
  2350.           type the following command and press the <ENTER> key:
  2351.           
  2352.                               WAMPUM VOODOO
  2353.           
  2354.                If you have a Compaq or some other clone that reports a
  2355.           color card when you are using a monochrome display, then type:
  2356.           
  2357.                               WAMPUM VOODOO MONO
  2358.  
  2359.  
  2360.  
  2361.                                        - 32 -
  2362.  
  2363.  
  2364.  
  2365.  
  2366.  
  2367.  
  2368.           3.1.3   Building a New File
  2369.           
  2370.                The first piece of the new application to build is the main
  2371.           data file.  This may contain up to 400 fields depending upon the
  2372.           amount of free memory in your computer. Be aware that you will
  2373.           forfeit dBASE III compatibility when you create more than 128.
  2374.           
  2375.                Select the B - Build New File option from the Main System
  2376.           Menu by typing a B or highlight the option and press <ENTER>. You
  2377.           then will be prompted to enter a file name for your new data base
  2378.           file.  The file name must comply with DOS requirements for file
  2379.           names, i.e. up to 8 characters, no spaces, and no punctuation.
  2380.           Think of a file name that bears some relationship to the
  2381.           application.  It makes things easier.  For our sample, let's use
  2382.           ACCOUNTS.  Type in the file name and press <ENTER>.  Note that
  2383.           you do NOT enter the file extension which WAMPUM assigns as .DBF.
  2384.           
  2385.                You then will be prompted to enter four pieces of infor-
  2386.           mation for each new field in your data base: a FIELD NAME, a
  2387.           FIELD TYPE, a FIELD LENGTH, and FIELD DECIMALS, if any. 
  2388.           
  2389.                In determining the order of the fields in the data base
  2390.           being created, keep in mind that BROWSE mode, which was discussed
  2391.           previously under the Select Utilities option, displays a single
  2392.           line of fields for about 20 records at a time.  If your users
  2393.           will be using BROWSE mode, then you should select the most
  2394.           important fields in the data base as the first fields in the
  2395.           file.  This will assure that they are displayed when the user
  2396.           sets BROWSE mode ON.  The actual number of fields which will fit
  2397.           on a single line of the screen is determined by two factors: the
  2398.           length of the field names used and the maximum length of the
  2399.           field data.  Adding these lengths together plus a space between
  2400.           each field, WAMPUM will display as many fields as will fit within
  2401.           79 characters in BROWSE mode.  The first character position of
  2402.           the line is reserved to display whether a record has been marked
  2403.           DELETED.
  2404.           
  2405.                Field names should bear some resemblance to the piece of
  2406.           data which will be stored in the field.  dBASE III supports 10
  2407.           character field names, and WAMPUM can use them, too.  However,
  2408.           applications are much more straight-forward if field names are
  2409.           limited to 8 characters or less since this length matches the DOS
  2410.           filename length restriction.  
  2411.           
  2412.                Field types and lengths supported by WAMPUM include:
  2413.           
  2414.           Field Type     Abbrev    Min.Len.  Max.Len.  Comments            
  2415.            
  2416.           Character        C          1        254     Any text string
  2417.           Numeric          N          1         15     Numeric for math
  2418.           Date             D          8          8     Any date info
  2419.           Logical          L          1          1     True/False info
  2420.           Memo             M         10         10     Free-form WP text
  2421.           
  2422.           
  2423.  
  2424.  
  2425.  
  2426.  
  2427.                                        - 33 -
  2428.  
  2429.  
  2430.  
  2431.  
  2432.  
  2433.  
  2434.                Field decimals will always be 0 except for numeric fields in
  2435.           which you want to use real numbers, i.e. those with decimals. 
  2436.           Remember that with such fields, the TOTAL length is the maximim
  2437.           number of integer positions, plus 1 for the decimal, plus the
  2438.           number of decimal positions.  Thus, if the largest value to be
  2439.           entered in a numeric field is 999.99, the field length is 6 and
  2440.           decimals is 2.
  2441.           
  2442.                Enter the information for the fields outlined in our sample.
  2443.           After entering all of the fields, a new blank record will
  2444.           appear.  Press the <ESC>ape key to indicate that you are
  2445.           finished.
  2446.           
  2447.           
  2448.           3.1.4   Selecting the New File
  2449.           
  2450.                Once the data base structure has been created, you are ready
  2451.           to tell WAMPUM which file you will be working with.  From the
  2452.           Main System Menu select the F - File Select option to place the
  2453.           file in use.
  2454.           
  2455.                When you pick this option, you will be prompted for the name
  2456.           of the file to use.  If you forget the name of the file, just
  2457.           press the <ENTER> key and a list of .DBF files in the current
  2458.           directory will be displayed.  Press <ENTER> to return to the file
  2459.           name prompt.  Type ACCOUNTS as the name of the new file and press
  2460.           <ENTER> to redisplay the Main System Menu.
  2461.           
  2462.                The bottom of the Main System Menu now should show the file
  2463.           in use with a notation: FILE: ACCOUNTS.
  2464.           
  2465.           
  2466.           3.1.5   Revising the Existing File Structure
  2467.           
  2468.                Beginning with version 3.1, WAMPUM provides a simple
  2469.           facility to revise the structure of an existing data base. This
  2470.           often becomes necessary when you design an initial data base
  2471.           without first turning the machines to spend some time thinking
  2472.           first.
  2473.           
  2474.                To revise the structure of an existing data base, you first
  2475.           must select that file for use with the F - File Select option.
  2476.           Once the file is in use, select the B - Build New File.  The
  2477.           prompt will advise you to insert an asterisk (*) for the file
  2478.           name if you desire to revise the existing data base structure.
  2479.           Type an asterisk and press <ENTER>.  WAMPUM will ask whether you
  2480.           really want to revise the structure of the data base. Type Y.
  2481.           
  2482.                WAMPUM will display up to two columns of fields from your
  2483.           data base.  For each field, you may change the field name, field
  2484.           type, field length, and field decimals.  You may also delete a
  2485.           field from the structure by marking the DELETE? option True.  If
  2486.           you change the name or field type of an existing field, ALL DATA
  2487.           which exists in that field throughout your data base will be
  2488.           destroyed!  If there are more than 40 fields in your data base
  2489.  
  2490.  
  2491.  
  2492.  
  2493.                                        - 34 -
  2494.  
  2495.  
  2496.  
  2497.  
  2498.  
  2499.  
  2500.           structure, you can move through them using the <PgDn> and <PgUp>
  2501.           keys.  Once you have made all the changes to existing fields
  2502.           desired, press the <ESC> key to proceed.
  2503.           
  2504.                WAMPUM then will ask whether you wish to ADD new fields to
  2505.           the existing data base.  If you need additional fields, type Y
  2506.           and you will be prompted for a field name, type, length, and
  2507.           decimals entry for each new field.  You also can use <PgUp> and
  2508.           <PgDn> to move through the existing fields.  Once you have added
  2509.           all of the new fields desired, press <ESC> to proceed.
  2510.           
  2511.                WAMPUM then gives you one last chance to avoid modifying the
  2512.           structure of your data base.  If you wish to proceed, type Y when
  2513.           prompted for whether to revise the data base structure.  Make
  2514.           certain that your hard disk has sufficient empty space to tempo-
  2515.           rarily house a duplicate of your data base (.DBF) and memo fields
  2516.           file (.DBT), if any.  Also make certain that you make a backup of
  2517.           your data base before revising the structure of the file.
  2518.           
  2519.                Once the data base has been revised, always reindex using
  2520.           the X - Rebuild/FileFix option.  If you are using edit checks,
  2521.           data entry menus, or keyboard macros which were keyed to the old
  2522.           file structure, make certain that these are revised to reflect
  2523.           the new data base structure before adding or editing data in the
  2524.           data base.
  2525.           
  2526.           
  2527.           3.1.6   Indexing the New File
  2528.           
  2529.           3.1.6.1  Overview
  2530.           
  2531.                WAMPUM indexes serve two functions in run-time applications.
  2532.           First, they provide a quick means of retrieving records for edit,
  2533.           display, or printing.  Typical retrieval times even with large
  2534.           data bases are less than one second.  Indexes also serve as the
  2535.           sorting tool for all output: reports, labels, and form letters.
  2536.           
  2537.                Thus, in building a new application, you need to take both
  2538.           of these considerations into account.  You will need indexes to
  2539.           retrieve your data quickly for updating.  And you may need other
  2540.           indexes to assure that reports, labels, and form letters are
  2541.           produced in the proper sorted order.
  2542.           
  2543.                The primary advantage in using indexes rather than a sort
  2544.           for output is that no physical sorting of the data base ever
  2545.           takes place since the indexes are constantly updated as new
  2546.           records are added and old ones are modified.  This saves an
  2547.           enormous amount of time in producing reports.
  2548.           
  2549.                WAMPUM 3.1 supports up to SEVEN indexes for any application.
  2550.           It should be noted that while these indexes function much like
  2551.           the indexes in dBASE III, they are not compatible.  Thus, if you
  2552.           are moving dBASE III applications over to use with WAMPUM, the
  2553.           data base, reports, and labels are compatible, but the indexes
  2554.           are not.  These can be rebuilt easily using the guidelines which
  2555.           follow.  WAMPUM indexes have a file extension of .NTX.
  2556.  
  2557.  
  2558.  
  2559.                                        - 35 -
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.           
  2567.                Select the I - Index select/create option from the Main
  2568.           System Menu.  Notice that this option provides a developer with a
  2569.           means both to create new indexes and to use existing ones.  Both
  2570.           avenues are addressed in the next sections of this Guide.
  2571.           
  2572.           
  2573.           3.1.6.2  Creating New Indexes
  2574.           
  2575.                New indexes can be created in one of two ways depending upon
  2576.           the type of index desired.  WAMPUM can create an index of any
  2577.           character, numeric, or date field as it exists in the data base. 
  2578.           Or you can create a special index made up of a combination of
  2579.           fields in the data base using dBASE string manipulation
  2580.           functions.  For example, if your data base had fields for both a
  2581.           first name and a last name, you might want a single index which
  2582.           sorted the data base on last name and then first name within the
  2583.           last name.
  2584.           
  2585.                The simpler index which is simply a single field index is
  2586.           created by entering a single asterisk (*) in the space provided
  2587.           for the index name.  If you wish to create more than one index,
  2588.           enter a single * in the space provided for Index 1, Index 2, etc.
  2589.           When you have entered as many asterisks as desired, press <PgDn>
  2590.           to continue.  The screen will then clear, and a list of all the
  2591.           fields in your data base will appear.  Mark the name of ONE field
  2592.           you want to index with the letter T or Y.  Make certain that you
  2593.           mark only ONE field on the screen True. Then <PgDn> to continue. 
  2594.           If you indicated that you wished to create more than one index by
  2595.           putting an * in more than one of the Index spaces, then you will
  2596.           get another screen with the same field list.  Mark the next field
  2597.           you want to index with a T or Y, and <PgDn> again.  Continue this
  2598.           process until up to 7 indexes have been created.
  2599.           
  2600.                In our example, you probably would want to index two fields:
  2601.           the LASTNAME field and the ACCTNO field.  So you should place a
  2602.           single * in the first two Index spaces provided and <PgDn>.
  2603.           
  2604.                In some circumstances, a more complex index may be desired.
  2605.           If you know what you are doing (i.e. you really are a dBASE III
  2606.           programmer), you can build any type of index to achieve any type
  2607.           of sorting desired.  To build a more complex index, enter two
  2608.           asterisks (**) beside each Index entry provided and <PgDn>.  You
  2609.           then will be prompted to name the new index file and then to
  2610.           enter the index expression.  This expression can be ANY legal
  2611.           dBASE III string expression.  Note two differences with Clipper's
  2612.           indexes insofar as TRIMmed fields (those with the trailing spaces
  2613.           stripped off) are concerned.  If you are trimming spaces off
  2614.           character strings, they must be added as real spaces at the end
  2615.           of the expression.  Otherwise, the resultant index will be
  2616.           nothing but a null string.  Second, an index expression must have
  2617.           a constant fixed length. For example, if you wanted to index on
  2618.           lastname then comma space first name, the correct syntax is
  2619.           SUBSTR(TRIM(LASTNAME)+", "+FIRSTMI+SPACE(20),1,35). The SPACE(20)
  2620.           expression assumes the LASTNAME field is 20 characters in length.
  2621.           
  2622.  
  2623.  
  2624.  
  2625.                                        - 36 -
  2626.  
  2627.  
  2628.  
  2629.  
  2630.  
  2631.  
  2632.           3.1.6.3  Selecting Indexes
  2633.           
  2634.                Once you have built new indexes, they automatically are
  2635.           selected for use in the same order they were built.  You can
  2636.           change both the LEAD INDEX and the active indexes at any time by
  2637.           picking the I - Index select/create option and entering the
  2638.           number of the lead index or the names of the indexes desired.
  2639.           
  2640.                One caution is in order.  Remember that indexes are only
  2641.           UPDATED with ADD or EDIT if those indexes are in use at the time
  2642.           the file is changed!  You can ascertain which indexes are in use
  2643.           by looking at the INDX listing which appears below the Main
  2644.           System Menu.  If you built the indexes recommended in the last
  2645.           section, the last line of your screen should read as follows:
  2646.           
  2647.                     FILE: ACCOUNTS   INDX: LASTNAME,ACCTNO
  2648.           
  2649.           
  2650.           3.1.7   Printer Configuration (.MEM file)
  2651.           
  2652.           3.1.7.1  Overview
  2653.           
  2654.                In order to create high-quality output in reports, labels,
  2655.           and form letters, you will need to configure an application for a
  2656.           specific printer.  WAMPUM is packaged with several printer
  2657.           configuration tables which already have been built to support a
  2658.           number of popular printers.  If you're a lucky person, your work
  2659.           has already been done.  If not, read the section on constructing
  2660.           a new printer table below.
  2661.           
  2662.                WAMPUM is designed to allow a developer to imbed printer
  2663.           codes in reports, labels, and form letters to control the actual
  2664.           printing of text.  In addition, the end-user can specify the
  2665.           starting printer font to be used to output any report, label, or
  2666.           form letter.  Finally, WAMPUM preformatted output includes the
  2667.           option of specifying the initialization printer string. 
  2668.           
  2669.                What is a WAMPUM printer table?  It is a standard dBASE III
  2670.           memory variable file (.MEM file extension) with special codes
  2671.           that tell your printer to print in a certain mode.  The following
  2672.           field names are reserved by WAMPUM and should not be used as
  2673.           field names in your data bases.  These fields can be used in
  2674.           creating report forms, labels, and form letters to vary the type
  2675.           styles within those output documents.
  2676.           
  2677.                     FONTINIT       FONT1     FONT4     FONT7
  2678.                     FONTRESET      FONT2     FONT5     FONT8
  2679.                     FONT0          FONT3     FONT6     FONT9
  2680.           
  2681.                Note that the FONTINIT sequence always gets sent to the
  2682.           printer before anything is printed.  The FONTRESET sequence
  2683.           always gets sent after anything is printed.  If these fields are
  2684.           empty, then obviously nothing gets sent.
  2685.           
  2686.  
  2687.  
  2688.  
  2689.  
  2690.  
  2691.                                        - 37 -
  2692.  
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.                The default font for all output is FONT0.  This always gets
  2699.           sent after the FONTINIT sequence unless you specify some other
  2700.           number when the output is generated.
  2701.           
  2702.                Listed below is the definition logic used to develop the
  2703.           font codes for the HP Laserjet printers.  It is similar to what
  2704.           was used for the Epson printers, except all output is in portrait
  2705.           mode with Epson.  In general terms, FONT9 is reserved for very
  2706.           small print to accomodate reports wider than 132 columns. FONT8
  2707.           is reserved to accomodate reports from 81 to 132 columns wide.
  2708.           FONT7 is used with the lasers to get mailing labels to line up.
  2709.           
  2710.                     FONT0     10 pitch Courier, portrait mode
  2711.                     FONT1     10 pitch standard, portrait mode
  2712.                     FONT2     10 pitch bold, portrait mode
  2713.                     FONT3     10 pitch italics, portrait mode
  2714.                     FONT4     Proportional, big bold, portrait mode
  2715.                     FONT5     Proportional, baby print, portrait mode
  2716.                     FONT6     Standard, baby print, portrait mode
  2717.                     FONT7     10 pitch with codes suitable for LABELS
  2718.                     FONT8     10 pitch, standard, landscape mode
  2719.                     FONT9     Standard, baby print, landscape mode
  2720.           
  2721.                Obviously, use of these font codes can be adjusted as your
  2722.           application demands.  There may be instances in which you need
  2723.           underscoring.  This can be accomplished using one font to turn on
  2724.           automatic underscore and another to turn it off if your printer
  2725.           supports it.
  2726.           
  2727.                For those using LaserJet Plus or LaserJet II printers, you
  2728.           should be aware that these font codes also can be used to imbed a
  2729.           logo or signature block in a form.  Pricing for digitized logos
  2730.           is about $150 each while digitized signatures cost about $50. One
  2731.           source for these is Orbit Enterprises, P.O. Box 2875, Glen Ellyn,
  2732.           IL 60138.  The phone number is 312/469-3405.
  2733.           
  2734.           
  2735.           3.1.7.2  Selecting an Existing Printer Table
  2736.           
  2737.                To select an existing printer table for use, choose the
  2738.           option labeled # - PRINTER Config on the Main System Menu.  A
  2739.           listing of all .MEM files in the current directory will be
  2740.           displayed.  Enter the name of the printer table you wish to use
  2741.           without the .MEM file extension.  Note that you may use a table
  2742.           which is stored in another directory so long as that directory is
  2743.           part of DOS's PATH command and as long as you know the file name.
  2744.           
  2745.                Once you have selected a printer, the Main System Menu will
  2746.           reappear and the last line on the screen should now show the
  2747.           printer and FONT in use.  Assuming you selected the HPLASERA
  2748.           font, the last line of your screen should look like this:
  2749.           
  2750.                FILE: ACCOUNTS  INDX:LASTNAME,ACCTNO  PRT: HPLASERA/0
  2751.           
  2752.           
  2753.  
  2754.  
  2755.  
  2756.  
  2757.                                        - 38 -
  2758.  
  2759.  
  2760.  
  2761.  
  2762.  
  2763.  
  2764.           3.1.7.3  Creating a New Printer Table
  2765.           
  2766.                If there is no printer table already available for your non-
  2767.           standard printer, then you will need to build one.  It's easy! 
  2768.           First, select the # - PRINTER config option on the Main Menu.
  2769.           
  2770.                When WAMPUM prompts for the name of the printer table to
  2771.           use, type an asterisk (*) and press <ENTER>.  If entering a file
  2772.           name for your new printer template, you then will get a data
  2773.           entry screen in which to type the special codes for your
  2774.           printer.  You will need your printer manual to figure these out!
  2775.           
  2776.                First, decide what you want each of the printer fonts to
  2777.           do.  You also must determine what sort of initialization
  2778.           sequence, if any, you want to initiate whenever anything is
  2779.           printed.  And, you will want to decide whether to reset your
  2780.           printer after the printing is completed.  Almost every printer
  2781.           has some code sequence which resets the printer to its default
  2782.           settings just as if the printer had been switched off and on. 
  2783.           This is a good idea!  It always assures that your printer is
  2784.           configured in a standard way for the next job.  It's an equally
  2785.           good idea to execute this reset as part of the printer initiali-
  2786.           zation sequence.
  2787.           
  2788.                Most printer codes start with an <ESC>ape code which has the
  2789.           ASCII value of 27.  In a lot of printer manuals, it is referred
  2790.           to as CHR$(27) which is the way <ESC> is written in BASIC.  Any
  2791.           time you see a code written as above which cannot be typed using
  2792.           the standard typewriter keyboard, you can enter it in WAMPUM just
  2793.           as you would in LOTUS 1-2-3 or Symphony, i.e. \027 (a backslash
  2794.           followed by a three-digit number representing the ASCII code of
  2795.           the character desired: zero, two, seven).  For example, if your
  2796.           printer manual says that ESCAPE E or CHR$(27)+E is the escape
  2797.           sequence to reset your printer, then enter the following: \027E. 
  2798.           
  2799.                Particularly with laser printers, it may be desirable in
  2800.           some situations to force some carriage returns at the beginning
  2801.           of a job.  This is especially true to line up mailing labels.  To
  2802.           accomodate this, WAMPUM permits the developer to insert carriage
  2803.           return codes in the font setups using the tilde (~).  One tilde
  2804.           means one return.  Two tildes means two returns, etc.  Make
  2805.           certain that ALL tildes follow the complete escape sequence you
  2806.           desire to generate for each font code since characters following
  2807.           tildes are ignored. Do NOT use tildes in the FONTINIT, FONTRESET,
  2808.           FONT0, or FONT2 codes since these have special uses in WAMPUM.
  2809.           
  2810.                Use this process to build the printer table for your
  2811.           printer, and you're all set.  Press the <PgDn> key when you have
  2812.           entered all of the codes desired.
  2813.           
  2814.                Note that you also can edit an existing printer table by
  2815.           entering an * as if you were creating a new printer table.  When
  2816.           WAMPUM prompts for the name of the new printer table, simply
  2817.           enter the name of the old table.  When the data entry screen
  2818.           appears, you will see that codes such as \027 have been converted
  2819.  
  2820.  
  2821.  
  2822.  
  2823.                                        - 39 -
  2824.  
  2825.  
  2826.  
  2827.  
  2828.  
  2829.  
  2830.           by WAMPUM into the actual ASCII character.  In the case of the
  2831.           <ESC> code, this is an arrow pointing to the left.  These codes
  2832.           can be deleted or edited as desired.
  2833.           
  2834.                A final word of warning.  Do NOT press the <ESC> key to
  2835.           enter an escape code!  This key allows you to ABORT updating a
  2836.           printer table.  To enter an escape code as part of a printer
  2837.           string, you must type \027.
  2838.           
  2839.           
  2840.           3.1.8   Relating a Secondary File
  2841.           
  2842.                For purposes of report, label, and form letter output, you
  2843.           may relate or link a secondary data base to an identical field in
  2844.           the primary data base if the following conditions are met.  
  2845.           
  2846.                (1) The secondary data base must be in the default directory
  2847.           or in the path specified by the DOS PATH command.  (2) The
  2848.           secondary data base must be indexed on a field identical in size,
  2849.           type, and field name with a field in the primary data base.  Note
  2850.           that the matching field in the primary data base need not be
  2851.           indexed.  
  2852.           
  2853.                Whenever a report, label, or form letter is run while a
  2854.           related file and index are set, the developer may access data in
  2855.           any of the fields of the matching related file record by
  2856.           specifying the field names with the following syntax:
  2857.           ALIAS->fieldname where ALIAS is the name of the related file and
  2858.           FIELDNAME is the name of the field to be output from the related
  2859.           file.
  2860.           
  2861.                A secondary file may be related in one of two ways.  The
  2862.           first is to select the Z - Zoom/Relate File option on the Main
  2863.           System Menu and enter the name of the file and index to be
  2864.           related.  This relation stays in effect until changed provided
  2865.           you save it as part of the configuration.  Once a file has been
  2866.           related successfully, the file name display on the last line of
  2867.           the Main System Menu screen should look like the following:
  2868.           
  2869.                               FILE: ACCOUNTS/R
  2870.           
  2871.           Any reports. labels, or form letters produced after relating the
  2872.           secondary file may access the fields in the related file also.
  2873.           
  2874.                The second method of relating a file and index is as part of
  2875.           developing the WAMPUM PreFormatted Output file.  This is
  2876.           discussed in a subsequent section of the User's Guide.  It
  2877.           provides additional flexibility since it permits the developer to
  2878.           relate different secondary files and indexes to different
  2879.           reports, labels, and form letters.  WAMPUM Preformatted Output
  2880.           does not rely upon the relation established using the Z option.
  2881.           
  2882.           
  2883.  
  2884.  
  2885.  
  2886.  
  2887.  
  2888.  
  2889.                                        - 40 -
  2890.  
  2891.  
  2892.  
  2893.  
  2894.  
  2895.  
  2896.           3.1.9   Storing the New Configuration (WAMPUM.MEM)
  2897.           
  2898.                The configuration of a given application is stored in a
  2899.           configuration file called WAMPUM.MEM.  You can change the default
  2900.           configuration by picking the configuration option from the Main
  2901.           System Menu. Select * - CONFIG Update.  For each application you
  2902.           build, you may store certain information as a configuration:
  2903.           
  2904.                (1)  A Heading for the Main System Menu
  2905.           
  2906.                (2)  The Default Drives for the Main Data Base, Related
  2907.                     Data Base, and All Other Files
  2908.           
  2909.                (3)  The Name of the Main Data Base, Related Data Base,
  2910.                     and Associated Indexes
  2911.           
  2912.                (4)  The Name of the Printer Configuration File
  2913.           
  2914.                (5)  Whether to Disable Certain Choices on the Main
  2915.                     System Menu
  2916.           
  2917.                (6)  Whether WAMPUM is started with BROWSE mode ON
  2918.           
  2919.                (7)  Whether WAMPUM should maintain an Audit Trail
  2920.           
  2921.                (8)  Whether Users must confirm data entry by pressing
  2922.                     the <ENTER> key in each field
  2923.           
  2924.                (9)  The Left and Right Margin settings for Form Letters
  2925.           
  2926.               (10)  The Output Print Device or Printer Output File Name
  2927.                     if Network mode is enabled
  2928.           
  2929.               (11)  Whether to Enable Network File Sharing
  2930.           
  2931.                Once the application is reconfigured, then WAMPUM remembers
  2932.           the new configuration the next time WAMPUM is run whether it is
  2933.           run in Developer or End-User mode.  This permits a developer to
  2934.           completely customize a WAMPUM application and then turn it over
  2935.           to end-users without the end-user having to master all of the
  2936.           concepts involved in building an application from the ground up.
  2937.           
  2938.           
  2939.           3.1.10  Building Reports, Labels, and Form Letters
  2940.           
  2941.           3.1.10.1  REPORTS
  2942.           
  2943.           3.1.10.1.1  Overview
  2944.           
  2945.                WAMPUM Reports are designed using the Autumn '87 Clipper
  2946.           REPORT Generator, which Nantucket generously has allowed us to
  2947.           distribute without charge.  Before you can create new report
  2948.           forms or revise old ones, you need to make sure the program
  2949.           REPORT.EXE is located in a directory supported by your DOS PATH
  2950.           command.  This will assure that WAMPUM can access the report
  2951.           generator whenever you want to design or redesign a report form.
  2952.  
  2953.  
  2954.  
  2955.                                        - 41 -
  2956.  
  2957.  
  2958.  
  2959.  
  2960.  
  2961.  
  2962.           As indicated previously, WAMPUM requires a minimum of 420K memory
  2963.           to access the report writer from within WAMPUM with DOS 3.1.  If
  2964.           you are short on memory, you can run REPORT.EXE from the DOS
  2965.           level by typing REPORT filename where filename is the name of the
  2966.           report you wish to create or revise.
  2967.           
  2968.                Before designing a report, you will always want to print out
  2969.           a listing of the file structure with which you will be working. 
  2970.           Pick the S - Select Utilities option and specify T or Y for the
  2971.           List File Structure option.  Then type Y when asked whether to
  2972.           print the structure listing.
  2973.           
  2974.                The Clipper Report Generator is quite similar to dBASE III's
  2975.           report writer which is accessed in dBASE with the command CREATE
  2976.           REPORT filename or MODIFY REPORT filename.  Thus, anyone who is
  2977.           generally familiar with the dBASE III method of designing report
  2978.           forms will have no problem doing the same with WAMPUM.  Please
  2979.           note that WAMPUM 3.1 includes the new Clipper REPORT Generator
  2980.           which accomodates special features added with dBASE III Plus.
  2981.           
  2982.                A report form is a file which contains a template telling
  2983.           WAMPUM which pieces of information you want to extract from a
  2984.           data base.  Note that we said "which pieces of information"
  2985.           meaning which fields rather than which records.  This is an
  2986.           important distinction since neither WAMPUM reports nor dBASE
  2987.           reports control which records print on a report.  That is
  2988.           controlled with record selection using the S - Select Utilities
  2989.           option in WAMPUM.  You might more accurately refer to report
  2990.           forms as a formatting mold through which you "pour" information
  2991.           from a data base.  
  2992.           
  2993.                All WAMPUM reports must have a DOS-standard file name with
  2994.           no file extension.  As is true with dBASE, WAMPUM supplies the
  2995.           file extension of .FRM with all report forms.
  2996.           
  2997.                The R - REPORTS Menu option on the WAMPUM Main System Menu
  2998.           provides three capabilities to the user.  First, you can run any
  2999.           existing report form whether created with the Clipper Report
  3000.           Generator or with the dBASE III Plus report writer.  Second, you
  3001.           can create new report forms using the Clipper Report Generator. 
  3002.           Finally, you can revise existing report forms using the Clipper
  3003.           Report Generator.  The reports need not have been created
  3004.           originally with the Clipper Report Generator.
  3005.           
  3006.                How to run reports is explained in the end-user section of
  3007.           this User's Guide.  The following two sections address how to
  3008.           create new report forms and revise old ones.
  3009.           
  3010.           
  3011.           3.1.10.1.2  Creating A New Report Format
  3012.           
  3013.                After printing a listing of the file structure with which
  3014.           you will be working, the next step in creating a new report form
  3015.           is to select the R - Reports Menu option from the WAMPUM Main
  3016.           System Menu.  When prompted for the name of the report form to
  3017.           run, type an asterisk (*) and press the <PgDn> key.  Then enter
  3018.  
  3019.  
  3020.  
  3021.                                        - 42 -
  3022.  
  3023.  
  3024.  
  3025.  
  3026.  
  3027.  
  3028.           the name you wish to assign to this new report form.  Do not
  3029.           enter a file extension since WAMPUM automatically assigns .FRM as
  3030.           the file extension in keeping with the dBASE naming convention. 
  3031.           WAMPUM then will run the Clipper Report Generator assuming you
  3032.           have sufficient memory to support it and assuming WAMPUM can find
  3033.           REPORT.EXE in the DOS PATH.
  3034.           
  3035.                As is true with the dBASE III report writer, the Clipper
  3036.           Report Generator divides a report into three parts:
  3037.           
  3038.           
  3039.                          1.  Page Heading & Format Settings
  3040.           
  3041.                          2.  Break Level Controls
  3042.           
  3043.                          3.  Report Column Contents & Headings
  3044.           
  3045.                The Page Heading & Format Settings screen allows you to
  3046.           specify the title of your report as well as the dimensions of the
  3047.           paper on which the report will be printed or displayed.  You also
  3048.           indicate whether the report should be single or double-spaced and
  3049.           whether form feeds should be generated before and after a report
  3050.           is produced.  Unlike dBASE III, WAMPUM always generates a form
  3051.           feed at the end of a report whether requested or not.  This
  3052.           assures your printer always is at TOP OF FORM for the next job.  
  3053.           
  3054.                For the Page Heading, just type in whatever title you want
  3055.           to appear at the top of your report when it prints out.  Do NOT
  3056.           center the title since WAMPUM will do this for you automatically.
  3057.           If you want a multi-line heading, just type it the way it should
  3058.           appear at the top of each page of the report.  
  3059.           
  3060.                Once you have entered a Page Heading, press the <ENTER> key
  3061.           to move to the Format Settings fields.  There are eight options:
  3062.           
  3063.                          1.  Enter page width  . . . . . .  80
  3064.                          2.  Enter left margin . . . . . .   8
  3065.                          3.  Enter right margin  . . . . .   0
  3066.                          4.  Enter no. lines per page  . .  58
  3067.                          5.  Double spaced report? . . . .   N
  3068.                          6.  Page eject before printing? .   Y
  3069.                          7.  Page eject after printing?  .   N
  3070.                          8.  Plain page  . . . . . . . . .   N
  3071.           
  3072.                Shown beside each of the above entries is the default value
  3073.           which will be used unless you change them.  The Plain Page option
  3074.           controls whether a report heading with date prints at the top of
  3075.           each page of your report.
  3076.           
  3077.                For normal printers, the default settings usually are fine
  3078.           except you may wish to narrow the left margin to about 2 just to
  3079.           provide more report space for information. In addition, you may
  3080.           wish to change the page eject before printing option to N. 
  3081.           
  3082.  
  3083.  
  3084.  
  3085.  
  3086.  
  3087.                                        - 43 -
  3088.  
  3089.  
  3090.  
  3091.  
  3092.  
  3093.  
  3094.                For those using a laser printer, you will need to adjust the
  3095.           settings or your reports will run off the bottom of the page
  3096.           since most lasers force a 1/2 inch margin at the top and bottom
  3097.           of a page.  With standard 10 pitch, portrait mode reports, the
  3098.           appropriate settings are 80, 2, 0, 56, and N or Y depending upon
  3099.           whether you want the report single or double-spaced.  If you are
  3100.           printing sideways (landscape mode) with FONT8 (10 pitch) or with
  3101.           FONT9  (16 pitch), then the settings should be as follows:
  3102.           
  3103.                          FONT8:    105, 2, 0, 40, and N or Y
  3104.           
  3105.                          FONT9:    160, 2, 0, 40, and N or Y
  3106.           
  3107.           
  3108.                Once you have entered the Page Heading and report settings,
  3109.           press the <PgDn> key to display the second screen of the Clipper
  3110.           report generator.  This screen is used principally to break
  3111.           reports into sections based upon a change in the value of some
  3112.           key field in the data base.  For beginners, just press <PgDn> to
  3113.           skip this screen.  
  3114.           
  3115.                For experts, you should recall that your report will not
  3116.           break properly on the field specified in Group/Subtotal on unless
  3117.           that same field is the primary index in use when the report is
  3118.           run.  Similarly, if you specify a subgroup field name, this must
  3119.           be a subfield in the primary index as well. An example may clear
  3120.           the air a little.
  3121.           
  3122.                Suppose you are producing a report of beauty contestants,
  3123.           and you want the report paginated by state and subdivided within
  3124.           the state by the city of residence of each contestant.  To
  3125.           produce such a report, you first would need to build a special
  3126.           index (**), give the index a name such as STATCITY, and  specify
  3127.           the fields to be indexed as STATE+CITY.  Whenever the report is
  3128.           run, that index must be the primary index. Then, in the report
  3129.           form, specify Group/subtotal on: STATE, Summary report only?
  3130.           N, Eject after subtotal? Y, Group/subtotal heading: Contestant
  3131.           state is , Subgroup/subsubtotal on CITY, Subgroup heading:
  3132.           Contestant city is .  
  3133.           
  3134.                What happens if you forget to set the primary index to
  3135.           STATCITY?  When the report is run, WAMPUM assumes you know what
  3136.           you are doing.  So, as the report sifts through your data base,
  3137.           it will do just what you told it.  Whenever, the city of the
  3138.           contestant changes, the report will print a subheading of
  3139.           Contestant city is Los Angeles or whatever, and when the state
  3140.           changes, the report will issue a page break and print a new page
  3141.           heading and group heading at the top of the next page saying
  3142.           Contestant state is Utah or whatever. However, since you forgot
  3143.           to put the proper index in effect, the actual records in the data
  3144.           base will not be in STATE and CITY order.  Thus, you may get a
  3145.           page with one contestant from California, then a page with one
  3146.           from Utah, then another page with one from California, etc.  In
  3147.           short, you probably will get about a 200 page report rather than
  3148.  
  3149.  
  3150.  
  3151.  
  3152.  
  3153.                                        - 44 -
  3154.  
  3155.  
  3156.  
  3157.  
  3158.  
  3159.  
  3160.           the 5 page report you expected.  As noted earlier, if you are a
  3161.           beginning report writer, skip this screen in the report writer
  3162.           until you invest in your own paper company.
  3163.           
  3164.                The meat of the coconut in creating report forms is the
  3165.           Field Contents screen.  This is the screen on which you tell the
  3166.           report generator which piece of information you want printed on
  3167.           the actual report.  For example, we may want to print the beauty
  3168.           contestant's name, her hometown, state, birthday, and, of course,
  3169.           measurements.  Each field of information should be specified on a
  3170.           separate Field Contents screen (unless you are an expert).  When
  3171.           you finish specifying one field of information to be output, you
  3172.           simply <PgDn> to get another screen.  This process continues
  3173.           until you have specified all of the pieces of information to be
  3174.           printed in the various columns of your report. Note that each
  3175.           screen asks for five pieces of information:
  3176.           
  3177.                          1.  CONTENTS
  3178.                          2.  # decimal places  0
  3179.                          3.  Totals?  N
  3180.                          4.  HEADER
  3181.                          5.  WIDTH
  3182.           
  3183.                For purposes of our example, let's assume the finished
  3184.           report should output something like the following:
  3185.           
  3186.           
  3187.           
  3188.           CONTESTANT'S NAME     HOMETOWN    STATE   BIRTHDAY  MEASUREMENTS
  3189.           -----------------     ----------  -----   --------  ------------
  3190.           Betty Boop            Podunck     CA      09/27/68  38-22-36
  3191.           Dolly Partin          Nashville   TN      09/27/45  48-28-38
  3192.           
  3193.                CONTENTS is asking for the legal field name of the field to
  3194.           print in the current column of the report.  For experts, CONTENTS
  3195.           may also contain any legal dBASE expression. In addition, you can
  3196.           force WAMPUM to create multi-line reports by specifying more than
  3197.           one field name for the contents field.  See the special note on
  3198.           the correct syntax for this below. Columns of a report are built
  3199.           from left to right across the screen or page when a report is
  3200.           produced.  Since we want the contestant's name in the first
  3201.           column, we would specify FULLNAME as the field to print assuming
  3202.           this was the name assigned to this field in our data base.   You
  3203.           can press the DOWN CURSOR or <ENTER> key to move down to the #
  3204.           decimal places field; however, the DOWN CURSOR is safer since a
  3205.           little Clipper bug sometimes assumes you're finished building
  3206.           your report when you press <ENTER>.
  3207.           
  3208.                Unless you have specified a numeric expression  for the
  3209.           CONTENTS, both the # decimal places field and the Totals? field
  3210.           should be left alone.  If you are outputting numeric data, then
  3211.           the # decimal places field allows you to specify how many decimal
  3212.           positions should be printed for this column of the report.  Enter
  3213.           a number and press the DOWN CURSOR.  Totals? allows you to
  3214.           specify whether you want the numeric expression totaled (and
  3215.           subtotaled) at breaks in the report and at the end of the
  3216.  
  3217.  
  3218.  
  3219.                                        - 45 -
  3220.  
  3221.  
  3222.  
  3223.  
  3224.  
  3225.  
  3226.           report.  Note again that you cannot TOTAL anything except a
  3227.           numeric expression.  If you just want a COUNT of records, this is
  3228.           covered below separately.  Then, DOWN CURSOR to the HEADER field.
  3229.           
  3230.                HEADER is asking for the column heading to display for this
  3231.           column of the report.  This is free-form text of your choosing. 
  3232.           It should convey to the reader of the report what the contents of
  3233.           this column of the report actually are.  The only precaution here
  3234.           is that the header typically should not be much wider in length
  3235.           than the maximum field width being displayed in this column. 
  3236.           Otherwise, you are just wasting space across the report since the
  3237.           WIDTH must be the wider of the field maximum width and the header
  3238.           width.  In the example above, type CONTESTANT'S NAME on the first
  3239.           header line, then press the DOWN CURSOR and type ----------------
  3240.           on the next line to simulate an underscore.  Use the DOWN CURSOR
  3241.           to move down to the WIDTH field.
  3242.           
  3243.                WIDTH is asking for the column width of this column of the
  3244.           report.  As noted above, this width should be the greater of the
  3245.           field maximum width or the longest line of the column headers.
  3246.           Note that the Clipper Report Generator loves the number 10.  This
  3247.           is the default, and occasionally when you edit a previous report,
  3248.           the report generator sometimes forgets the width you previously
  3249.           specified.  You may have to reenter it.
  3250.           
  3251.                Once you have entered the width desired, press <PgDn> and a
  3252.           second Field Contents Screen will appear.  Fill this one in for
  3253.           the next column of your report, then <PgDn> again.  Continue this
  3254.           process until you have completed all of the fields which you want
  3255.           output in the report.  Then <PgDn> to another blank Field
  3256.           Contents Screen.  Note that you MUST ALWAYS be on a blank Field
  3257.           Contents screen before electing to SAVE your report template. If
  3258.           you violate this rule, you probably will lose some of the columns
  3259.           of your report. Press the <ESC> key to tell the report writer you
  3260.           are finished.  
  3261.           
  3262.                You will be asked whether you are finished.  Typing a Y
  3263.           saves the report form to disk.  Typing an N returns you to the
  3264.           top of the current Field Contents Screen.  Pressing <ESC> aborts
  3265.           the report creation process and does NOT save the report.
  3266.           
  3267.                What happens if you want to change something before you have
  3268.           first saved the report?  Simply press <PgUp> to move back through
  3269.           the screens you have already entered.  Then <PgDn> to return to a
  3270.           blank Field Contents Screen before SAVING the report.  You
  3271.           probably will have to use the <ENTER> key to move through the
  3272.           last completed Field Contents Screen to get to a blank screen.
  3273.           
  3274.                Suppose you want to count the number of records output in
  3275.           the report.  This is perhaps the weakest link in both the dBASE
  3276.           report writer and the Clipper clone.  The easiest method for
  3277.           doing this is to include a final Field Contents Screen with the
  3278.           following specifications.  For the CONTENTS, type the number 1. 
  3279.           For DECIMALS, leave it at 0.  For TOTALS, type Y.  For the
  3280.           HEADER, type TOTAL and a second row of -----.  For width, type
  3281.           5.  This will tell WAMPUM to count the records as the report is
  3282.  
  3283.  
  3284.  
  3285.                                        - 46 -
  3286.  
  3287.  
  3288.  
  3289.  
  3290.  
  3291.  
  3292.           produced and print a total at the bottom.  It will also uglify
  3293.           your report by producing a column of 1's along the right margin
  3294.           of your report.
  3295.           
  3296.                Suppose you want to do some date calculations.  In the above
  3297.           example, suppose we want to compute the beauty contestant's age. 
  3298.           For the CONTENTS field, specify (DATE()-BIRTHDAY)/365.  Leave the
  3299.           decimals at 0, and totals as N.  For HEADER, insert AGE on the
  3300.           first line and --- on the second.  For WIDTH, type 3.  This tells
  3301.           WAMPUM to perform the following calculation each time a record
  3302.           qualifies for the report and output the answer in this column. 
  3303.           Subtract the contestant's birthdate from today's date.  This
  3304.           yields a number.  Divide this number by 365 to get the AGE in
  3305.           years of the contestant.  Note the parentheses around the
  3306.           subtraction.  In algebra, multiplication and division take
  3307.           precedence over addition and subtraction.  This means that WAMPUM
  3308.           would ordinarily attempt to perform the division before the
  3309.           subtraction.  Since you cannot divide a DATE field by a number,
  3310.           this would send WAMPUM into the OZONE when the report was run. 
  3311.           The parentheses tells WAMPUM to carry out the calculations in
  3312.           parentheses first before performing the division.  Since dBASE
  3313.           and WAMPUM can add and subtract dates, this will yield a numeric
  3314.           value which then can be divided by 365.
  3315.           
  3316.                Suppose you want to output the contents of a MEMO field in a
  3317.           report.  A minor "bug" in the Clipper compiler causes WAMPUM
  3318.           reports with a MEMO field to format strangely.  This now has been
  3319.           fixed through the addition of a new function: MEMOTRAN().  To
  3320.           output a MEMO field, enter the following expression for the field
  3321.           contents: MEMOTRAN(fieldname) where fieldname is the actual name
  3322.           of the MEMO field in your data base.  You may specify a column
  3323.           width of any length desired and WAMPUM will format the output
  3324.           accordingly.  Again, special thanks to Nantucket for providing
  3325.           this "fix" at no expense to anyone.
  3326.           
  3327.                Suppose you want a multi-line report with a name and address
  3328.           in a single column followed by several other pieces of data in
  3329.           separate columns.  For the contents field, you may specify more
  3330.           than one field for output in the column so long as all the fields
  3331.           evaluate to character strings.  To force multiple lines within a
  3332.           column, you simply reduce the column width to account for the
  3333.           amount of data which should display on each line plus one space.
  3334.           Then adjust your various lines of data to match the column width.
  3335.           A simple example should help. Assume you have a data base with a
  3336.           15 character FIRSTNAME field, 15 character LASTNAME field, 30
  3337.           character ADDRESS field, 15 character CITY field, and 2 character
  3338.           STATE field.  When the report is produced, we want all this
  3339.           information displayed in a single, multi-line column of the
  3340.           report.  To get the FIRSTNAME and LASTNAME fields to display on
  3341.           the same line would require 30 characters plus a space between
  3342.           the two fields and one space at the end of the LASTNAME to break
  3343.           the line.  Thus, the column width should be set to 32.  The
  3344.           correct CONTENTS expression would be as follows:
  3345.             
  3346.             SUBSTR(TRIM(FIRSTNAME)+SPACE(1)+LASTNAME+SPACE(31),1,32)+ 
  3347.             ADDRESS+SPACE(2)+TRIM(CITY)+", "+STATE
  3348.  
  3349.  
  3350.  
  3351.                                        - 47 -
  3352.  
  3353.  
  3354.  
  3355.  
  3356.  
  3357.  
  3358.           
  3359.                WAMPUM reports also support the immediate IF function
  3360.           implemented in dBASE III Plus.  The syntax of the function is as
  3361.           follows: IIF(Logical Expression,On True,On False).  This may be
  3362.           included to branch to one of two values in a report depending the
  3363.           value of the logical expression.  For example, suppose you wanted
  3364.           to display "HITCHED" if a MARRIED field was True but "AVAILABLE"
  3365.           if the field was False.  The correct syntax in your CONTENTS
  3366.           field of the report would be IIF(MARRIED,"HITCHED","AVAILABLE"). 
  3367.           Note that the OnTrue and OnFalse values may be character strings,
  3368.           dates, numeric values, or logical expressions so long as both are
  3369.           of the same data type. Any good reference work on dBASE III Plus
  3370.           can provide more examples of the immediate IF function.
  3371.           
  3372.                The final thing to be careful of in creating reports is to
  3373.           make sure the total field widths specified for your report do not
  3374.           exceed the PAGE WIDTH specified when you set up the report.  A
  3375.           little math in advance will solve this problem.  Remember that
  3376.           WAMPUM always leaves a single space between columns of the
  3377.           report.  This is in addition to the field widths you specify!
  3378.           
  3379.           
  3380.           3.1.10.1.3  Modifying Existing Report Formats
  3381.           
  3382.                To modify an existing report, select the R - Report Menu
  3383.           option from the Main System Menu.  Look at the listing of reports
  3384.           which displays and write down the name of the one to be
  3385.           modified.  Then type an asterisk (*) as if you were creating a
  3386.           new report.  Press <PgDn>.  When WAMPUM prompts for the name of
  3387.           your new report, enter the OLD name and press <ENTER>.  The
  3388.           discussion above with respect to creating a new report applies as
  3389.           well to modifying an existing one.  As noted, be careful to check
  3390.           the defaults and make certain the Clipper Report Generator did
  3391.           not reimpose its defaults rather than the values you specified. 
  3392.           You then can SAVE or ABORT saving the revised report just as was
  3393.           done in creating a new one.  Before SAVING a report, make certain
  3394.           that you have moved to the end of your existing report template
  3395.           and that a BLANK CONTENTS field is displayed on the screen!
  3396.           
  3397.           
  3398.           3.1.10.1.4  Outputting MEMO fields in Reports
  3399.           
  3400.                MEMO fields may be formatted as columns in a report just
  3401.           like a character string except for the syntax of the CONTENTS
  3402.           expression.  With character fields, you typically specify the
  3403.           actual name of the field to be output.  With a MEMO field, use
  3404.           the following syntax where COMMENTS is the actual field name
  3405.           given to the MEMO field you wish to output in the report:
  3406.           
  3407.                               MEMOTRAN(COMMENTS)
  3408.           
  3409.                MEMOTRAN is a Clipper function which fixes a quirk in the
  3410.           Clipper report writing software.  Using the above syntax will
  3411.           permit a MEMO field to be produced in a report column of
  3412.  
  3413.  
  3414.  
  3415.  
  3416.  
  3417.                                        - 48 -
  3418.  
  3419.  
  3420.  
  3421.  
  3422.  
  3423.  
  3424.           virtually any width desired.  Simply specify a field width of
  3425.           your choice and the MEMOTRAN function will assure that the text
  3426.           in the MEMO field is word-wrapped to fit in the specified width.
  3427.           
  3428.           
  3429.           3.1.10.2  LABELS
  3430.           
  3431.           3.1.10.2.1  Overview
  3432.           
  3433.                WAMPUM Label Templates are designed using the Clipper LABEL
  3434.           Generator, which Nantucket generously has allowed us to
  3435.           distribute without charge.  WAMPUM requires 420K to access the
  3436.           label generator program from the Main System Menu. If you are
  3437.           short on memory, you may run the label program from the DOS
  3438.           prompt using the following syntax: LABEL filename where filename
  3439.           is the name of the label template to be created or revised.
  3440.           
  3441.                Before you can create new label templates or revise old
  3442.           ones, you need to make sure the program LABEL.EXE is located in a
  3443.           directory supported by your DOS PATH command.  This will assure
  3444.           that WAMPUM can access the label generator whenever you want to
  3445.           design or redesign a label form.  
  3446.           
  3447.                You should also be aware that beginning with DOS 3.0, a DOS
  3448.           program named LABEL.COM is provided to rename volume labels. 
  3449.           Make certain that your DOS PATH checks the subdirectory
  3450.           containing Clipper's LABEL.EXE program before checking the DOS
  3451.           subdirectory containing LABEL.COM.  Otherwise, WAMPUM will
  3452.           execute the wrong program when you attempt to create or revise
  3453.           label forms.  Another approach is to rename LABEL.COM to some
  3454.           other file name such as NEWLABEL.COM.  This will avoid conflict.
  3455.           
  3456.                Before designing a label, you will always want to print out
  3457.           a listing of the file structure with which you will be working. 
  3458.           Pick the S - Select Utilities option and specify T or Y for the
  3459.           List File Structure option.  Then type Y when asked whether to
  3460.           print the structure listing.
  3461.           
  3462.                The Clipper Label Generator is quite similar to the dBASE
  3463.           III label writer which is accessed in dBASE with the command
  3464.           CREATE LABEL filename or MODIFY LABEL filename.  Thus, anyone who
  3465.           is generally familiar with the dBASE III method of designing
  3466.           label forms will have no problem doing the same with WAMPUM.
  3467.           
  3468.                A label form is a file which contains instructions telling
  3469.           WAMPUM which pieces of information you want to extract from a
  3470.           data base and place on labels.  Note that we said "which pieces
  3471.           of information" meaning which fields rather than which records. 
  3472.           This is an important distinction since neither WAMPUM labels nor
  3473.           dBASE labels control which records print on a label.  That is
  3474.           controlled with record selection using the S - Select Utilities
  3475.           in WAMPUM.  You might more accurately refer to label forms as a
  3476.           formatting template through which you "pour" your data.  
  3477.           
  3478.  
  3479.  
  3480.  
  3481.  
  3482.  
  3483.                                        - 49 -
  3484.  
  3485.  
  3486.  
  3487.  
  3488.  
  3489.  
  3490.                All WAMPUM labels must have a DOS-standard file name with no
  3491.           file extension.  As is true with dBASE, WAMPUM supplies the file
  3492.           extension of .LBL with all label forms.
  3493.           
  3494.                The L - LABELS for Mail option on the WAMPUM Main System
  3495.           Menu provides three capabilities to the user.  First, you can run
  3496.           any existing label form whether created with the Clipper Label
  3497.           Generator or with the dBASE III or dBASE III Plus label maker. 
  3498.           Second, you can create new label forms using the Clipper Label
  3499.           Generator.  Finally, you can revise existing label forms using
  3500.           the Clipper Label Generator.  The labels need not have been
  3501.           created originally with the Clipper Label Generator.
  3502.           
  3503.                How to run labels is explained in the end-user section of
  3504.           this User's Guide.  The following two sections address how to
  3505.           create new label forms and revise old ones.
  3506.           
  3507.           
  3508.           3.1.10.2.2  Creating A New Label Format
  3509.           
  3510.                After printing a listing of the file structure with which
  3511.           you will be working, the next step in creating a new label form
  3512.           is to select the L - Labels for Mail option from the WAMPUM Main
  3513.           System Menu.  When prompted for the name of the label form to
  3514.           run, type an asterisk (*) and press the <PgDn> key.  Then enter
  3515.           the name you wish to assign to this new label form.  Do not enter
  3516.           a file extension since WAMPUM automatically assigns .LBL as the
  3517.           file extension in keeping with the dBASE naming convention. 
  3518.           WAMPUM then will run the Clipper Label Generator assuming you
  3519.           have sufficient memory to support it and assuming WAMPUM can find
  3520.           LABEL.EXE in the DOS PATH before finding DOS's LABEL.COM program.
  3521.           
  3522.                As is true with the dBASE III label writer, the Clipper
  3523.           Label Generator divides a label form into two parts:
  3524.           
  3525.                          1.  Label Settings
  3526.           
  3527.                          2.  Label Contents 
  3528.           
  3529.                There are six items of information which can be set to
  3530.           specify how the labels should be produced.  These include the
  3531.           following with their default settings:
  3532.           
  3533.                          1.  Width of Label            35
  3534.                          2.  Height of Label            5
  3535.                          3.  Left Margin                0
  3536.                          4.  Lines Between Labels       1
  3537.                          5.  Spaces Between Labels      0
  3538.                          6.  No. of Labels Across       1
  3539.           
  3540.                Width of Label refers to the maximum width of any text entry
  3541.           on any label produced.  Height of Label means the maximum number
  3542.           of lines per label.  Left Margin is the starting column position
  3543.           for the left-most label.  Lines Between Labels specifies the
  3544.           number of blank lines between each completed label. Spaces
  3545.           Between Labels is the number of blank columns horizontally
  3546.  
  3547.  
  3548.  
  3549.                                        - 50 -
  3550.  
  3551.  
  3552.  
  3553.  
  3554.  
  3555.  
  3556.           between labels when two or more are produced across the page or
  3557.           screen.  Number of Labels Across allows you to specify how many
  3558.           columns of labels will be printed across the page (up to 5).
  3559.           
  3560.                The main consideration to keep in mind in producing labels
  3561.           is the following.  There is no pagination control for labels. All
  3562.           label forms assume an unending supply of continuous-form label
  3563.           stock in your printer.  If you are using a laser printer, then
  3564.           printer codes will have to be used to set top of form and page
  3565.           length to match the label format desired with one exception. 
  3566.           WAMPUM knows the format for 33-UP LABELS (11 labels per page with
  3567.           3 across) if you use the following settings for the label form
  3568.           and specify FONT7 with the HPLASERA or HPLASERB printer table:
  3569.           
  3570.                          1.  Width of Label            24
  3571.                          2.  Height of Label            4
  3572.                          3.  Left Margin                0
  3573.                          4.  Lines Between Labels       2
  3574.                          5.  Spaces Between Labels      4
  3575.                          6.  No. of Labels Across       3
  3576.           
  3577.                Once you have entered the label settings desired, press
  3578.           <PgDn> to move to the Label Contents Screen.  In this screen, you
  3579.           enter field names to be produced on the labels much as was done
  3580.           on the Field Contents Screen with Report Forms.  Then press <ESC>
  3581.           when you have completed filling out the field expressions which
  3582.           should appear on each line of the label.  You will be prompted to
  3583.           answer whether to save the new label format. A sample of field
  3584.           expressions appears next for a typical mailing label.  All of the
  3585.           names in BOLD are assumed to be the actual field names:
  3586.           
  3587.           
  3588.                1    TRIM(FIRSTNAME) + " " + TRIM(LASTNAME)
  3589.                2    ADDRESS1
  3590.                3    ADDRESS2
  3591.                4    TRIM(CITY) + ", " + TRIM(STATE) + " " + ZIPCODE
  3592.           
  3593.           
  3594.           3.1.10.2.3  Modifying An Existing Label Format
  3595.           
  3596.                To modify an existing label format, select the L - Labels
  3597.           for Mail option from the Main System Menu.  Look at the listing
  3598.           of labels which displays and write down the name of the one to be
  3599.           modified.  Then type an asterisk (*) as if you were creating a
  3600.           new label form.  Press <PgDn>.  When WAMPUM prompts for the name
  3601.           of your new label, enter the OLD name and press <ENTER>.  The
  3602.           discussion above with respect to creating a new label applies as
  3603.           well to modifying an existing one.  As noted, be careful to check
  3604.           the defaults and make certain the Clipper Label Generator did not
  3605.           reimpose its defaults rather than the values you specified.  You
  3606.           then can SAVE or ABORT saving the revised label form just as was
  3607.           done in creating a new one.  
  3608.           
  3609.           
  3610.  
  3611.  
  3612.  
  3613.  
  3614.  
  3615.                                        - 51 -
  3616.  
  3617.  
  3618.  
  3619.  
  3620.  
  3621.  
  3622.           3.1.10.3  FORM LETTERS
  3623.           
  3624.           3.1.10.3.1  Overview
  3625.           
  3626.                One of the most critical limitations of dBASE III has been
  3627.           its lack of a convenient "mail merge" interface which would allow
  3628.           selected data to be extracted from a data base and inserted into
  3629.           form letters.  WAMPUM now provides this missing link through its
  3630.           built-in Form Letter generator.
  3631.           
  3632.                Actually, a WAMPUM form letter is nothing more than a
  3633.           standard dBASE III data base with a single field designated as
  3634.           LINE1.  In executing a form letter merge through either the T -
  3635.           Form Letter Menu or via W - Wampum Preformatted Output, WAMPUM
  3636.           simply extracts data from your data base and merges it with the
  3637.           text contained in the form letter data base file you specify.
  3638.           
  3639.                WAMPUM automatically handles word wrapping as part of the
  3640.           merge process.  In addition, the Form Letter Generator includes
  3641.           powerful programming functions which allow you to test the
  3642.           contents of fields in a data base and branch to various
  3643.           paragraphs of the form letter depending upon the contents of the
  3644.           data base.  The current version of WAMPUM assumes that you will
  3645.           be outputting your form letters on 8-1/2 x 11 paper using 10
  3646.           pitch type.  You may adjust the left and right margin settings in
  3647.           the WAMPUM Configuration Screen if necessary.
  3648.           
  3649.                Based upon end-user's suggestions, a number of enhancements
  3650.           have been added to the form letter functions in WAMPUM 3.1. 
  3651.           These include the ability to open and manipulate up to 5 related
  3652.           data bases within any form letter file.  You also may now use an
  3653.           index to generate a form letter for any selected record in your
  3654.           active data base.  This avoids having to make a full pass through
  3655.           the main data base to generate only a few form letters.
  3656.           
  3657.                The following sections describe how to create an empty form
  3658.           letter as well as how to construct the form letter data base once
  3659.           the file has been created.  The end-user section of this Guide
  3660.           describes the process of merging data into a form letter file.
  3661.           
  3662.           
  3663.           3.1.10.3.2  Creating a New Form Letter File
  3664.           
  3665.                To create a new form letter, select T - Form Letter Menu
  3666.           from the Main System Menu.  When prompted for the name of the
  3667.           form letter to run, type an asterisk (*) and press <PgDn>.  You
  3668.           then will be prompted to name the new form letter.  This name
  3669.           must start with T- and then up to a 6 character name.  WAMPUM
  3670.           will add the .DBF file extension and build the form letter file.
  3671.           
  3672.           
  3673.           3.1.10.3.3  Building Data in Form Letter File
  3674.           
  3675.                To actually build the form letter, use F - File Select to
  3676.           select the form letter file with which you want to work, just as
  3677.           you would select any other data base file to use.
  3678.  
  3679.  
  3680.  
  3681.                                        - 52 -
  3682.  
  3683.  
  3684.  
  3685.  
  3686.  
  3687.  
  3688.           
  3689.                Before actually entering data for the form letter, some
  3690.           explanation of how form letters are constructed and how they are
  3691.           output will assist in your design.
  3692.           
  3693.                When WAMPUM generates form letters, it reads the form letter
  3694.           file to get the text for the form letter.  All leading and
  3695.           trailing spaces in each record are stripped off when WAMPUM
  3696.           builds the text to print.  WAMPUM then reads the next record in
  3697.           the form letter file and appends it with a single leading space
  3698.           to what was in the previous record.  For example, each field in a
  3699.           form letter record may contain up to 136 characters.  Suppose the
  3700.           the following two records were in the file:
  3701.           
  3702.                    Hello there,
  3703.                      Cutie!
  3704.           
  3705.                When this form letter was printed, the text would read:
  3706.           
  3707.           Hello there, Cutie!
  3708.           
  3709.                Note that there would be no indentation from the left
  3710.           margin, and all other spaces would be trimmed except the one
  3711.           space added between the two records.  
  3712.           
  3713.                How do you get spaces when you really want them?  This is
  3714.           done by inserting CHR(255) on the left margin of a record.  Then
  3715.           it can be followed by as many spaces as desired.  To insert this
  3716.           character, hold down the ALT key and type 255 with the numeric
  3717.           keypad.
  3718.           
  3719.                WAMPUM Form Letters also may contain markers (field data
  3720.           expressions) which tell WAMPUM to extract or evaluate information
  3721.           in the primary data base when the form letter is merged.  The
  3722.           main rule to remember insofar as field data expressions are
  3723.           concerned is that you may have only one such expression in each
  3724.           record of a form letter file.
  3725.           
  3726.                A FIELD DATA EXPRESSION always begins and ends with //.  In
  3727.           its simplest form, an expression such as //LASTNAME// would tell
  3728.           WAMPUM to extract the contents of the LASTNAME field in the
  3729.           current record and insert it into the form letter at this place. 
  3730.           The beginning and ending //'s must be part of the same record.
  3731.           
  3732.                With some Field Data Expressions, you may block off a
  3733.           section of text in the form letter which will be affected by the
  3734.           evaluation of the expression itself.  For instance, if a
  3735.           particular field is blank in the data base, WAMPUM form letters
  3736.           may contain a special code telling WAMPUM to omit all of the text
  3737.           which has been blocked off.  TEXT MARKERS consist of @@ at the
  3738.           beginning and ending of the affected text.  Note that these
  3739.           markers may not extend beyond a single record.  Thus, you cannot
  3740.           have one pair of @'s in record 5 and the other pair in record 6.
  3741.  
  3742.  
  3743.  
  3744.  
  3745.  
  3746.  
  3747.                                        - 53 -
  3748.  
  3749.  
  3750.  
  3751.  
  3752.  
  3753.  
  3754.           An example of the syntax would be the following.  Suppose you
  3755.           want to thank people for contributing to your reelection
  3756.           campaign.  In your data base is a field CONTRIBDT which will be
  3757.           empty if no contribution has been received.  The record entry in
  3758.           the form letter might say:
  3759.           
  3760.           @@Thanks for being such a great supporter!//*CONTRIBDT//@@
  3761.           
  3762.                This entry means if CONTRIBDT is not blank, then print the
  3763.           text: Thanks for being such a great supporter!  Otherwise, leave
  3764.           this sentence out of the form letter entirely.
  3765.           
  3766.                The following section describes all FIELD DATA EXPRESSIONS
  3767.           implemented as of version 3.1 of WAMPUM.
  3768.           
  3769.                Another difference in WAMPUM Form Letters and standard text
  3770.           is that WAMPUM needs to know when you really do want to end a
  3771.           paragraph.  This is referred to as a hard carriage return with
  3772.           many word processing packages.  WAMPUM interprets a blank record
  3773.           in the form letter file or a record beginning with a tilde (~) as
  3774.           a hard carriage return.  Note that if you want a hard return in a
  3775.           form letter and a blank line between paragraphs, you will need to
  3776.           insert two blank records in the form letter file or two records
  3777.           beginning with a tilde.  All text following a tilde is ignored if
  3778.           the tilde is the first character on the line.
  3779.           
  3780.                Finally, remember that WAMPUM form letters are built on the
  3781.           fly when you actually run the form letter program.  Make certain
  3782.           that you end all form letter files with at least one blank record
  3783.           and preferably two.  This will assure that the form letter buffer
  3784.           is purged before the next form letter is produced.
  3785.           
  3786.           
  3787.           3.1.10.3.4  WAMPUM Field Data Expressions
  3788.           
  3789.                What follows is a listing of the syntax for various FIELD
  3790.           DATA EXPRESSIONS together with an example of each expression. 
  3791.           The best way to get a feel for using WAMPUM Form Letters is to
  3792.           build a few.  It provides more power and flexibility in this area
  3793.           than any commercial product on the market.  Like any powerful
  3794.           programming tool, however, it takes a little getting used to.
  3795.           
  3796.           //LASTNAME//   Allows imbedding a character, numeric, or date
  3797.                          field within a form letter record.  It would
  3798.                          output Jones if Jones were in the LASTNAME field.
  3799.                          Note: if a date field, it outputs the date in the
  3800.                          format May 21, 1986 if entry is 05/21/86.
  3801.           
  3802.           @@Thanks //LASTNAME//.@@ Allows imbedding a CHARACTER FIELD with
  3803.                          a string of text which will print only if the
  3804.                          field is not blank.  It would output Thanks Jones.
  3805.                          if Jones were in the LASTNAME field.
  3806.           
  3807.           
  3808.           
  3809.           
  3810.  
  3811.  
  3812.  
  3813.                                        - 54 -
  3814.  
  3815.  
  3816.  
  3817.  
  3818.  
  3819.  
  3820.           @@Filed.//*FILINGDT//@@  Tests whether a particular character,
  3821.                          numeric, or date field is not blank or whether a
  3822.                          logical field is True.  In either case, if True
  3823.                          the output would be Filed. Otherwise, nothing
  3824.                          would be printed.
  3825.           
  3826.           @@Not filed.//#FILINGDT//@@   Just the opposite of the above.
  3827.                          If the character, numeric, or date field is empty
  3828.                          or if the logical field is False, the expresion is
  3829.                          printed. Otherwise, nothing would be printed.
  3830.           
  3831.           @@A new baby!//?PREGNANT//@@  Similar to above.  Used only with
  3832.                          a logical field.  If logical field is True, the
  3833.                          expression is printed.
  3834.           
  3835.           @@So you're 30.//!AGE=30//@@  Allows any dBASE III expression as
  3836.                          the test for whether the text should be printed. 
  3837.                          If the test is True, the text is printed.  Make
  3838.                          certain that both sides of the expression are of
  3839.                          the same data type.  This example would print
  3840.                          So you're 30! if the AGE numeric field = 30.
  3841.           
  3842.           // AGE=30//    This is the syntax for a GOTO using the WAMPUM
  3843.                          form letter generator.  Note the SPACE at the
  3844.                          beginning of the expression which means, IF the
  3845.                          expression is True, SKIP to the next record
  3846.                          beginning with a SPACE character.  If you want to
  3847.                          skip past a required carriage return record, make
  3848.                          certain that the record begins with a tilde and
  3849.                          not with a SPACE since blank records are assumed
  3850.                          to be those containing all spaces.
  3851.           
  3852.           //+SAMPLE.DOC//     With lengthy pieces of text with no embedded
  3853.                          data, it is often easier to type them into a plain
  3854.                          ASCII document using a text editor.  You then can
  3855.                          merge them into a WAMPUM form letter with the
  3856.                          syntax shown which says read in the SAMPLE.DOC
  3857.                          text file at this point in the form letter.  Note
  3858.                          that this command should appear in a record by
  3859.                          itself with no other text.
  3860.           
  3861.           //=DTOC(DATE())//   There may be times when you just want to
  3862.                          reformat some data directly out of the data base.
  3863.                          The = operand allows this to be done with any
  3864.                          dBASE expression so long as it evaluates to a
  3865.                          STRING EXPRESSION when it is processed.
  3866.           
  3867.           //<#,filename,indexname//  Using the < command allows you to
  3868.                          open up to 5 related data bases from within a 
  3869.                          form letter file.  Replace the pound sign (#) with
  3870.                          a number from 5 through 9. Note that 5 corresponds
  3871.                          to the number of the related data base opened with
  3872.                          the Zoom/Relate File option.  It need not be
  3873.                          reopened.  Paths may be included in identifying
  3874.                          both the filename and the indexname.
  3875.           
  3876.  
  3877.  
  3878.  
  3879.                                        - 55 -
  3880.  
  3881.  
  3882.  
  3883.  
  3884.  
  3885.  
  3886.           //>#,string expression//  Using the > command permits you to do
  3887.                          an indexed SEEK by key value to any record in the
  3888.                          file identified by the number replacing #.  This
  3889.                          numbered file and a corresponding index must
  3890.                          already have been opened using the < command. The
  3891.                          string expression may be the contents of a field
  3892.                          in the primary data base or any dBASE string
  3893.                          expression.  If the name of a field in the primary
  3894.                          data base is used, be sure to precede it with the
  3895.                          ALIAS for the file using the following syntax:
  3896.                          ALIAS->fieldname where ALIAS is the actual file
  3897.                          name of the primary data base and fieldname is the
  3898.                          legal field name of a field in the primary file.
  3899.                          Once the SEEK has been accomplished, any data in
  3900.                          the secondary data base may be extracted using the
  3901.                          = field data expression outlined above and the
  3902.                          ALIAS->fieldname syntax where ALIAS is the name of
  3903.                          the secondary data base file and fieldname is the
  3904.                          name of a field in that file.
  3905.           
  3906.           //FF//         The FF command allows the user to generate a form
  3907.                          feed or page eject from within a form letter file.
  3908.           
  3909.           
  3910.           3.1.11  Building Function Key Macros (KEYS.DBF)
  3911.           
  3912.                As an aid in data entry intensive applications, WAMPUM
  3913.           provides the capability to define up to 39 keyboard macros which
  3914.           may be invoked by the end-user simply by pressing a function key.
  3915.           As is true with WAMPUM applications generally, these keyboard
  3916.           macros are application specific.  This simply means that a set of
  3917.           keyboard macros may be defined for each application in each new
  3918.           directory created on the hard disk.
  3919.           
  3920.                The name of the file which stores the macros is KEYS.DBF
  3921.           which is a standard dBASE III data base file.  It is created
  3922.           automatically whenever WAMPUM is first run in a new subdirectory.
  3923.           To build the table of macro definitions, follow the steps below. 
  3924.           
  3925.                First, select the KEYS.DBF file as the file with which you
  3926.           want to work by picking the F - File Select option on the Main
  3927.           Menu.  Enter the file name KEYS when prompted to do so.  When the
  3928.           Main Menu reappears, the bottom line of the screen should say:
  3929.           
  3930.                                    FILE: KEYS
  3931.           
  3932.                Next, you will want to figure out what keystrokes you want
  3933.           to store under which function keys.  The following function keys
  3934.           are available for use:
  3935.           
  3936.                                    F2 - F10
  3937.                                    Shift F1 - Shift F10
  3938.                                    Ctrl F1 - Ctrl F10
  3939.                                    Alt F1 - Alt F10
  3940.           
  3941.  
  3942.  
  3943.  
  3944.  
  3945.                                        - 56 -
  3946.  
  3947.  
  3948.  
  3949.  
  3950.  
  3951.  
  3952.                You will note that this is all function key combinations
  3953.           except for F1 which is reserved by WAMPUM as the HELP key.
  3954.           
  3955.                Record numbers in the KEYS file match the function keys by
  3956.           key number.  See the table below:
  3957.           
  3958.                          Function Keys            Record Numbers
  3959.                          --------------------     --------------
  3960.                          F2 - F10                 Rec #  2 - 10
  3961.                          Shift F1 - Shift F10     Rec # 11 - 20
  3962.                          Ctrl F1 - Ctrl F10       Rec # 21 - 30
  3963.                          Alt F1 - Alt F10         Rec # 31 - 40
  3964.           
  3965.                Thus, whatever keystrokes are entered in record 5 of the
  3966.           KEYS file will automatically be assigned to function key F5. 
  3967.           Those in record 40 will be assigned to function key ALT-F10.  Any
  3968.           record in the KEYS.DBF file which is blank will be ignored.
  3969.           
  3970.                There are two cardinal rules to remember in entering data in
  3971.           the records of the KEYS file.  (1) Record 1 of the KEYS file is
  3972.           always ignored since it corresponds to the HELP function key, F1.
  3973.           (2)  Every entry in the KEYS file must equate to a CHARACTER
  3974.           STRING when evaluated by WAMPUM.
  3975.           
  3976.                The first rule is only logical.  Since F1 is reserved for
  3977.           HELP, the corresponding record in the KEYS file is ignored. 
  3978.           Whatever is entered in this record won't matter because it is
  3979.           ignored.  Note that you will have to ADD a first record which
  3980.           automatically will be record 1.  Simply press <ENTER> to save it
  3981.           and create record 2 which can be used.
  3982.           
  3983.                The second rule is critical because if it is violated you
  3984.           will get run-time errors the next time WAMPUM is started.  If
  3985.           this happens, simply type I to ignore each error (which means
  3986.           that function key will not be set), then edit the records causing
  3987.           the problems following the steps outlined above.
  3988.           
  3989.                Translated into dBASE III lingo, each record in the KEYS
  3990.           file must be a character string.  If it is simply character data,
  3991.           you meet this requirement by enclosing the data in double or
  3992.           single quotes.  If you have single quotes in the string, then
  3993.           enclose the string in double quotes and vice versa.
  3994.           
  3995.                You can also use dBASE III functions and special WAMPUM
  3996.           functions to create macros so long as the expression evaluates to
  3997.           a string.  Here are a few examples to get you started:
  3998.           
  3999.                DTOC(DATE()) would store today's date as a macro in the
  4000.           following format: 10/10/86.
  4001.           
  4002.                FULLDATE(DATE()) would store today's date as a macro in the
  4003.           following format: October 10, 1986.
  4004.           
  4005.                DTOC(DATE()+30) would store today's date + 30 days.
  4006.           
  4007.  
  4008.  
  4009.  
  4010.  
  4011.                                        - 57 -
  4012.  
  4013.  
  4014.  
  4015.  
  4016.  
  4017.  
  4018.                CDOW(DATE()) would store the day of the week in a macro in
  4019.           the following format: Tuesday.
  4020.           
  4021.                STR(YEAR(DATE()),4) would store the year as a string in the
  4022.           following format: 1986.
  4023.           
  4024.                WEEKDAY(DATE()+30) would store the date 30 days from today
  4025.           rolled over to Monday if it hits on weekend in format: 10/10/86.
  4026.           
  4027.                Again, the important thing to remember is that character
  4028.           text must be enclosed in quotes, and data other than character
  4029.           data must be converted into a string using one of the dBASE III
  4030.           or WAMPUM conversion functions.
  4031.           
  4032.                Finally, these keyboard macros will not take effect until
  4033.           the next time WAMPUM is run from DOS.  They will be loaded on
  4034.           each subsequent running of the program unless changed. Developers
  4035.           should be careful not to store a file named KEYS.DBF in the DOS
  4036.           PATH unless you intend to invoke the macros contained therein
  4037.           whenever an application starts and a file named KEYS.DBF cannot
  4038.           be found in the default directory.
  4039.           
  4040.           
  4041.           3.1.12  Building Edit Checks (EDIT.DBF)
  4042.           
  4043.                As an aid in data entry accuracy, WAMPUM provides the
  4044.           capacity to design custom edit checks for each WAMPUM
  4045.           application.  As was true with keyboard macros, a set of edit
  4046.           checks may be defined for each application in each new directory
  4047.           created on the hard disk.
  4048.           
  4049.                The name of the file which stores the edit checks is
  4050.           EDIT.DBF which is a standard dBASE III data base file.  It is
  4051.           created automatically whenever WAMPUM is first run in a new
  4052.           subdirectory. To build the table of edit checks, follow the steps
  4053.           below. 
  4054.           
  4055.                First, select the EDIT.DBF file as the file with which you
  4056.           want to work by picking the F - File Select option on the Main
  4057.           Menu.  Enter the file name EDIT when prompted to do so.  When the
  4058.           Main Menu reappears, the bottom line of the screen should say:
  4059.           
  4060.                                    FILE: EDIT
  4061.           
  4062.                Next, you will want to figure out what edit checks you want
  4063.           to develop for the particular application.  For some
  4064.           applications, you may want to assure that a data entry field is
  4065.           never left blank.  For others, you may want to assure that a
  4066.           duplicate key is never entered.  Finally, you may want to assure
  4067.           that an entry is contained in a table of valid entries.  None of
  4068.           these checks are possible in dBASE III without substantial custom
  4069.           programming.  WAMPUM provides this capability with a few minutes
  4070.           work. 
  4071.           
  4072.  
  4073.  
  4074.  
  4075.  
  4076.  
  4077.                                        - 58 -
  4078.  
  4079.  
  4080.  
  4081.  
  4082.  
  4083.  
  4084.                The EDIT file structure consists of two fields: EDITTEST and
  4085.           ERRMSG.  The theory behind WAMPUM edit checks is a simple one. 
  4086.           Once you "turn on" the edit checks for use against a particular
  4087.           file, WAMPUM automatically tests newly added records as well as
  4088.           updated existing records to make certain that they do NOT violate
  4089.           any of the error conditions (EDITTESTs) you have specified in the
  4090.           EDIT file. The checks are only run when new records are added to
  4091.           a data base or existing records are changed.  For each error
  4092.           condition identified, WAMPUM will display an error message
  4093.           (ERRMSG) and then permit the end-user to fix the problems.  The
  4094.           end-user cannot SAVE the record with errors without correcting
  4095.           them.  The end-user may <ESC>ape from a data entry screen without
  4096.           invoking WAMPUM's edit checking.
  4097.           
  4098.                Since developers typically work with several files in
  4099.           creating a new application, there are some instances in which you
  4100.           would not want the EDIT CHECKS to occur.  Most importantly, when
  4101.           the primary data base is not being used, you would not want to
  4102.           invoke a series of edit checks designed to check primary data
  4103.           base information.  This is handled in a simple way.  WAMPUM
  4104.           always reads the EDITTEST field entry in the first record of the
  4105.           EDIT.DBF to ascertain the name of the file to be checked.  If
  4106.           this entry does not match IN UPPER CASE the name of the current
  4107.           file in use, the edit checks are turned off.  Stated somewhat
  4108.           differently, the EDITTEST field of Record 1 of EDIT.DBF is
  4109.           reserved to hold the UPPER CASE name of the data base to be edit
  4110.           checked.  Thus, in the case of our example, the entry in Record 1
  4111.           of EDIT.DBF should say ACCOUNTS.  If you forget to enter the name
  4112.           of the data base file to be checked in record 1, then obviously
  4113.           the edit checks specified will never be invoked!
  4114.           
  4115.                There also may be occasions where you want to specify the
  4116.           actual fields to be displayed with BROWSE MODE ON rather than
  4117.           accepting WAMPUM's default which is the first few fields in the
  4118.           actual data base structure.  If you want to specify your own
  4119.           fields, insert the following in the ERRMSG field of Record 1.
  4120.           The first character must be an asterisk (*).  It is followed by
  4121.           the field numbers (from your file structure listing) of the
  4122.           fields you want displayed.  All numbers must be three characters
  4123.           wide and should be padded to the left with spaces.  Three digit
  4124.           numbers should be preceded by a single space. For example, if you
  4125.           want the fields LASTNAME, ACCTNO, and SEX display in BROWSE mode
  4126.           and these are fields 3, 17, and 252 in your data base, the
  4127.           correct syntax would be: *  3 17 252.
  4128.           
  4129.                There are three things to keep in mind in developing your
  4130.           edit checks.  First, edit checks must be dBASE III or WAMPUM
  4131.           expressions which can be evaluated as True or False.  Second, if
  4132.           the expression in EDITTEST is true, the error message in ERRMSG
  4133.           is triggered.  In other words, you are building expressions which
  4134.           identify when an error condition occurs rather than the other way
  4135.           around.  Third, and most importantly, if you wish to evaluate
  4136.           data entered in a particular field, you do NOT use the fieldname
  4137.           to test for an error.  Instead you use the field's sequential
  4138.  
  4139.  
  4140.  
  4141.  
  4142.  
  4143.                                        - 59 -
  4144.  
  4145.  
  4146.  
  4147.  
  4148.  
  4149.  
  4150.           number in the data base in conjunction with an array name
  4151.           FLDDATA[].  The next paragraph will clear up any confusion you
  4152.           are momentarily experiencing.
  4153.           
  4154.                Since you need to know a field's position in the file
  4155.           structure in order to develop edit checks, your first step should
  4156.           be to print out the file structure of the file which will be
  4157.           checked.  Pick the S - Select Utilities option after making
  4158.           certain that the correct file is in use.  Change the List File
  4159.           Structure option to T or Y, then answer Y when prompted for
  4160.           whether the structure should be printed.  This will give you the
  4161.           list of fields in the data base.  Note that the left column shows
  4162.           the field's NUMBER in the structure.  Let us assume that the
  4163.           LASTNAME field is field number 1.  An appropriate edit check to
  4164.           assure that the LASTNAME field was not left blank would read as
  4165.           follows: EMPTY(FLDDATA[1]) or in standard dBASE III parlance, you
  4166.           could say FLDDATA[1]=SPACE(20) assuming the field's width was 20
  4167.           characters.  One of the above entries should be entered as the
  4168.           EDITTEST entry in the EDIT file.  The ERRMSG field entry might
  4169.           say something like this: The LASTNAME field cannot be left
  4170.           BLANK.  Whenever the EDITTEST record evaluates to TRUE, meaning
  4171.           FLDDATA[1] is blank, then the ERRMSG would be displayed.  The
  4172.           important thing to remember is to use FLDDATA[1] and not LASTNAME
  4173.           in identifying the field to be checked!  Note that you also can
  4174.           check one field against another in the same data entry screen. 
  4175.           For example, assume there were two fields in the data base as
  4176.           follows:
  4177.           
  4178.                     1    TRANSCODE      Character      8
  4179.                     2    TRANSDATE      Date           8
  4180.           
  4181.           Let's also assume that the format of the TRANSCODE entries is of
  4182.           the form: 86-12345 where 86 identifies the year of the trans-
  4183.           action. One edit check you probably would want to perform in a
  4184.           situation such as this is to make sure the first two digits of
  4185.           the TRANSCODE matched the year in the TRANSDATE field.  Here is
  4186.           one possible way to handle that:
  4187.           
  4188.                     SUBSTR(FLDDATA[1],1,2)<>SUBSTR(DTOC(FLDDATA[2]),7,2)
  4189.           
  4190.           Note in the example that the relationship must be coded so that
  4191.           when it is TRUE, the error message displays.  Thus, we want to
  4192.           code it in such a way that when the first two characters of the
  4193.           TRANSCODE do not match the year in the TRANSDATE, the expression
  4194.           is True and hence the error message is given.  Note also that the
  4195.           expressions on both sides of the relational operator must be of
  4196.           the same type.  In this case, both are character strings.
  4197.           
  4198.                Finally, it should be noted that these EDIT CHECKS will not
  4199.           take effect until the next time WAMPUM is run with the
  4200.           appropriate file in use.  They will be loaded on each subsequent
  4201.           running of the program unless changed. Developers should be
  4202.           careful not to store a file named EDIT.DBF in the DOS PATH unless
  4203.           you intend to invoke the edit checks contained therein whenever
  4204.           an application is run and a file named EDIT.DBF cannot be found
  4205.           in the default directory.
  4206.  
  4207.  
  4208.  
  4209.                                        - 60 -
  4210.  
  4211.  
  4212.  
  4213.  
  4214.  
  4215.  
  4216.           
  4217.                Beginning with version 2.7 of WAMPUM, several enhancements
  4218.           were added to the EDIT checking module.  WAMPUM now supports both
  4219.           calculated fields through the EDIT process as well as "table
  4220.           lookup" to make certain that a field value appears in a given
  4221.           table of values.
  4222.           
  4223.                               Creating Calculated Fields
  4224.           
  4225.                To automatically calculate the value for a field, that field
  4226.           must be one of the fields in the active data base.  Typically,
  4227.           you would NOT want it to display on a data entry menu since its
  4228.           value will be changed automatically regardless of what the user
  4229.           enters.  This calculation capacity may be used to compute both
  4230.           dates and numeric values and where necessary can also compute
  4231.           values for character and logical fields.  To automatically
  4232.           calculate the value for a field, follow these steps:
  4233.           
  4234.                (1)  In the EDITTEST field, the first character must be the
  4235.           equals sign (=).  This is followed by whatever selection criteria
  4236.           will be used to determine when the calculation IS performed.  If
  4237.           you want it done whenever a record is added or changed, then the
  4238.           EDITTEST field should look like the following:
  4239.           
  4240.                          =.T.
  4241.           
  4242.           WAMPUM keeps track of what mode it is in by setting a variable
  4243.           HELPCODE to the number corresponding to the option picked from
  4244.           the Main System Menu, e.g. A - Add is 1, E - Edit is 2, etc.
  4245.           
  4246.           You may find it helpful to be able to perform calculated field
  4247.           transactions only when the user is in Edit mode or Add mode.  If
  4248.           you only wanted a field calculated when a new record was added,
  4249.           use the following syntax in the EDITTEST field:
  4250.           
  4251.                          =HELPCODE=1
  4252.           
  4253.                (2)  In the ERRMSG field, two codes must be inserted and
  4254.           they are separated by a comma.  The first is the field number
  4255.           corresponding to the field to be calculated.  Then insert a
  4256.           comma.  Then enter any legal dBASE expression to handle the
  4257.           calculation desired.  A simple example may help.
  4258.           
  4259.           Assume that the data base contains a FILINGDT field as #1, a
  4260.           DAYSPEND field as #14, and a CLOSEDT field as #20.  Until a
  4261.           closing date entry has been made, we want the computer to
  4262.           recompute the days pending from the filing date whenever a new
  4263.           record is added or changed.  The field entries should look like
  4264.           the following:
  4265.           
  4266.                     EDITTEST: =EMPTY(FLDDATA[20])
  4267.           
  4268.                     ERRMSG:   14,DATE()-FLDDATA[1]
  4269.           
  4270.           
  4271.           
  4272.  
  4273.  
  4274.  
  4275.                                        - 61 -
  4276.  
  4277.  
  4278.  
  4279.  
  4280.  
  4281.  
  4282.                               Using "Table-Lookup" for Editing
  4283.           
  4284.                "Table lookup" for Editing means the ability of a data base
  4285.           system to refer to a table of values in order to determine
  4286.           whether a value entered by a user is acceptable.  Within WAMPUM,
  4287.           table-lookup is implemented using standard dBASE data bases for
  4288.           the tables.  These data bases may be checked either sequentially
  4289.           or through a Clipper-index file (.NTX) as the developer desires. 
  4290.           To perform "table lookup" as part of the edit checking process,
  4291.           the following rules must be met:
  4292.           
  4293.                (1)  In the EDITTEST field, the first character must be a
  4294.           question mark (?) if a non-indexed dBASE file will be used as the
  4295.           table.  Or two question marks (??) must be used if a dBASE file
  4296.           table will be checked using a Clipper index as the key.  The
  4297.           question mark or marks are followed by whatever selection
  4298.           criteria the developer wants to specify to tell WAMPUM when the
  4299.           table lookup SHOULD be performed.  See the examples above.
  4300.           
  4301.                (2)  In the ERRMSG field, three values must be inserted with
  4302.           a comma between the values.
  4303.           
  4304.                     (a)  The first code is the number of the field to be
  4305.                          checked against the table. Then type a comma.
  4306.           
  4307.                     (b)  The second code is the dBASE file name of the
  4308.                          table to be checked (without the .DBF extension).
  4309.                          Then type a comma.
  4310.           
  4311.                     (c)  The third code is one of two values.  With a non-
  4312.                          indexed table lookup (?), the third code is the
  4313.                          name of the field in the table lookup file to be
  4314.                          compared.  With an indexed table lookup (??), the
  4315.                          third code is the name of the Clipper index file
  4316.                          (without .NTX extension) to use for the lookup.
  4317.           
  4318.           An example may help remove some of the mystery.  Assume your main
  4319.           data base has a field #8 for the user to enter the abbreviation
  4320.           of the STATE where the customer lives.  You want to make sure
  4321.           this entry is, in fact, a state in the United States.  Using
  4322.           WAMPUM, you build another data base with a file name of STATES
  4323.           and an index called ABBREV which holds the two character abbre-
  4324.           viation for each state in the United States.  Your entries would
  4325.           look like the following in the EDIT record:
  4326.           
  4327.                     EDITTEST: ??.T.
  4328.           
  4329.                     ERRMSG:   8,STATES,ABBREV
  4330.           
  4331.           
  4332.                          Using "Table-Lookup" for Calculated Fields
  4333.           
  4334.                Just as a table could be checked to verify data in your data
  4335.           bases, WAMPUM also permits table-lookup to actually calculate the
  4336.           contents of fields in your primary data base.  The table may be
  4337.  
  4338.  
  4339.  
  4340.  
  4341.                                        - 62 -
  4342.  
  4343.  
  4344.  
  4345.  
  4346.  
  4347.  
  4348.           accessed either sequentially or through a Clipper-index file
  4349.           (.NTX) as the developer desires.  To calculate a table follow
  4350.           these simple steps in adding an entry to the EDIT file:
  4351.           
  4352.                (1)  In the EDITTEST field, the first character must be an
  4353.           exclamation point (!) if a non-indexed dBASE file will be used as
  4354.           the table.  Or two exclamation points (!!) must be used if a
  4355.           dBASE file table will be referenced using a Clipper index as the
  4356.           key.  The exclamation point(s) are followed by whatever selection
  4357.           criteria the developer wants to specify to tell WAMPUM when the
  4358.           table lookup calculation SHOULD be performed.  
  4359.           
  4360.                (2)  In the ERRMSG field, five values must be inserted with
  4361.           a comma between the values.
  4362.           
  4363.                     (a)  The first code is the number of the field in the
  4364.                          primary data base to be used to find a match in
  4365.                          the table. Then type a comma.
  4366.           
  4367.           
  4368.                     (b)  The second code is the dBASE file name of the
  4369.                          table to be checked (without the .DBF extension).
  4370.                          Then type a comma.
  4371.           
  4372.                     (c)  The third code is one of two values.  With a non-
  4373.                          indexed table lookup (!), the third code is the
  4374.                          name of the field in the table lookup file to be
  4375.                          compared.  With an indexed table lookup (!!), the
  4376.                          third code is the name of the Clipper index file
  4377.                          (without .NTX extension) to use for the lookup.
  4378.                          Then type a comma.
  4379.           
  4380.                     (d)  The fourth code is the number of the field in the
  4381.                          primary data base to be calculated from the table.
  4382.                          Then type a comma.
  4383.           
  4384.                     (e)  The fifth code is any legal dBASE expression which
  4385.                          specifies the value to be calculated for the field
  4386.                          referenced in (2)(d) above.  This expression would
  4387.                          include references to one or more fields in the
  4388.                          table typically.
  4389.           
  4390.           By way of example, let us assume that a company maintains an
  4391.           ORDERS file with numerous pieces of information being captured
  4392.           about new orders.  Among these are the part number (field #1) and
  4393.           the part cost (field #2).  There also is a table of PARTS which
  4394.           contains the cost of each part (PARTCOST) in the company's
  4395.           inventory.  The developer wants to look up the cost of the part
  4396.           specified in the ORDERS file and insert it automatically into the
  4397.           part cost field in the ORDERS file.  The syntax to do this using
  4398.           a PARTS file indexed on part number would look like this:
  4399.           
  4400.                     EDITTEST: !!.T.
  4401.           
  4402.                     ERRMSG:   1,PARTS,PARTNO,2,PARTCOST
  4403.           
  4404.  
  4405.  
  4406.  
  4407.                                        - 63 -
  4408.  
  4409.  
  4410.  
  4411.  
  4412.  
  4413.  
  4414.           3.1.13  Building Data Entry Menus (MENUS.DBF)
  4415.           
  4416.                Up to 9 customized data entry menus may be built for any
  4417.           given application.  These typically correspond to different
  4418.           stages in the data entry process for a given data base.  In
  4419.           addition to these 9 customized data entry menus, WAMPUM also
  4420.           provides a standard data entry screen which includes access to
  4421.           every field in the current data base.
  4422.           
  4423.                These data entry menus are numbered 0 to 9 with 0 being the
  4424.           default standard menu with access to all fields.  In addition to
  4425.           specifying up to 9 custom menus, the developer may also restrict
  4426.           users without the developer password to a given range of menu
  4427.           numbers.  Thus, some care must be exercised to group the
  4428.           restricted and non-restricted menus into contiguous numbers.  A
  4429.           range of 1 to 5 is permissible, but you cannot allow access to
  4430.           menu 0 as well as menus numbered 2 to 6.
  4431.           
  4432.                Information pertaining to the custom menus is stored in a
  4433.           standard dBASE file named MENUS which is created in the current
  4434.           default directory whenever WAMPUM is first invoked.  Each record
  4435.           in the MENUS file corresponds to a custom menu with the same
  4436.           number.  Thus, record 1 contains information about menu 1, and so
  4437.           on.
  4438.           
  4439.                To build one or more custom menus, first start up WAMPUM in
  4440.           Developer Mode by specifying the developer password after the
  4441.           word WAMPUM.  Make certain that the File in Use at the bottom of
  4442.           the screen is the one for which you want to build the custom
  4443.           menus.  If so, choose S - Select Utilities and change the List
  4444.           File Structure field entry to T.  Then <PgDn> and print the file
  4445.           structure for reference. 
  4446.           
  4447.                When the Main System Menu reappears, pick F - File Select
  4448.           and enter the file name of MENUS. Press <ENTER> and WAMPUM will
  4449.           open the MENUS file.  When the Main System Menu reappears, make
  4450.           sure the bottom line of the screen shows the file name MENUS.
  4451.           
  4452.                To ADD a new custom menu, pick A - Add Records from the Main
  4453.           System Menu. A blank record will appear with two fields: MENUNAME
  4454.           and FLDLIST.  As the name suggests, MENUNAME is whatever name you
  4455.           want to assign to this custom menu, e.g. CASE OPENING MENU. Enter
  4456.           the title desired and press <ENTER> to move to the FLDLIST field.
  4457.           
  4458.                In FLDLIST, you specify the field numbers corresponding to
  4459.           the fields you want displayed on the data entry screen.  The
  4460.           sequence used to specify the numbers does not matter since the
  4461.           fields always are ordered according to their numeric position in
  4462.           the data base structure.  The format for these field numbers is
  4463.           CRITICAL! 
  4464.           
  4465.                Rule 1: Each field number must be AT LEAST 3 characters in
  4466.           length with spaces to the left of the number to "pad" it to 3
  4467.           characters. For example, field 1 would require that you type two
  4468.           spaces and then the number 1.  27 would require one leading space
  4469.           and then the number 27.  
  4470.  
  4471.  
  4472.  
  4473.                                        - 64 -
  4474.  
  4475.  
  4476.  
  4477.  
  4478.  
  4479.  
  4480.           
  4481.                Rule 2: Each field number must be preceded by at least one
  4482.           space. Thus, field 106 would require a space then the number 106.
  4483.           
  4484.                Rule 3: As many fields may be specified as will fit within
  4485.           the FLDLIST field observing the two rules above.  For example, to
  4486.           create a data entry menu with fields 1, 7, 21, and 107, FLDLIST
  4487.           should look like the following without the quotation marks which
  4488.           have been included only to assist in showing the spaces:
  4489.           
  4490.                               "  1  7 21 107"
  4491.           
  4492.                Once the FLDLIST field has been specified, press CTRL-W or
  4493.           <PgDn> to save the entry.  A new blank record will appear.  You
  4494.           may continue to add menus or <ESC> to exit to the Main System
  4495.           Menu.
  4496.           
  4497.                Once the Main System Menu reappears, press <ESC>ape to exit
  4498.           to DOS.  Then restart WAMPUM in Developer Mode again.  When the
  4499.           Main System Menu appears, pick S - Select Utilities and mark the
  4500.           Change Current Menu field as T and <PgDn>.
  4501.           
  4502.                In Developer Mode, three fields will appear below the list
  4503.           of available menus:
  4504.           
  4505.                          (1)  Number of current menu to use
  4506.           
  4507.                          (2)  Minimum menu number
  4508.           
  4509.                          (3)  Maximum menu number
  4510.           
  4511.                For now, press <ENTER> to skip through the current menu
  4512.           field.  Then enter a value for the minimum menu number and the
  4513.           maximum which corresponds to the menus you have created and to
  4514.           which you want the users to have access.  Remember that if the
  4515.           minimum number is 0, users will be able to access and change
  4516.           every field in the data base!  Make certain that BOTH the minimum
  4517.           menu number and the maximum menu number do NOT exceed the value
  4518.           of the last record in the MENUS file.  The minimum and maximum
  4519.           menu numbers may be the same number so long as the rule above is
  4520.           not violated.
  4521.           
  4522.                Once you have entered these values <PgDn> if necessary to
  4523.           return to the Main System Menu.  Now access the Menu Selection
  4524.           screen again by choosing S - Select Utilities, then mark Change
  4525.           Current Menu true, then <PgDn>.  The correct range of menu
  4526.           choices should now be displayed.  Now set the value for the
  4527.           current menu to use and <PgDn> to return to the Main System Menu.
  4528.           Now you may SAVE this new configuration by selecting the option 
  4529.           G - Configuration Update then pressing <ENTER>.
  4530.           
  4531.                You now are ready to test the application.  <ESC>ape to DOS
  4532.           and restart WAMPUM in user mode.  Select the A - Add Records
  4533.           option and make certain that the correct menu displays.  Press
  4534.           <ESC>ape.  Now choose S - Select Utilities and mark Change
  4535.           Current Menu true and <PgDn>.  The correct range of menus should
  4536.  
  4537.  
  4538.  
  4539.                                        - 65 -
  4540.  
  4541.  
  4542.  
  4543.  
  4544.  
  4545.  
  4546.           appear, and you should only be able to enter a number in the
  4547.           range specified.  If not, restart WAMPUM in Developer Mode and
  4548.           change the ranges following the steps outlined above.
  4549.           
  4550.           
  4551.           3.1.14  Building an Audit Trail File (AUDIT.DBF)
  4552.           
  4553.                For a variety of reasons, it may be desirable to create an
  4554.           audit trail of all data added or changed in a data base.  This
  4555.           can be done as a means of verifying the accuracy of data posted
  4556.           to the data base.  Or it can be done in multi-user environments
  4557.           to provide update integrity to the master data base while many
  4558.           users share access to a copy of the data base from the previous
  4559.           day.  In the latter instance, the audit trail serves as a
  4560.           transaction log of new entries to the master data base.  These
  4561.           transaction logs can be built using numerous workstatios.  Then
  4562.           at the end of the day all of the new transactions can be posted
  4563.           to the master data base using WAMPUM's Copy Utilities.  
  4564.            
  4565.                To invoke the AUDIT TRAIL/TRANSACTION LOGGING feature of
  4566.           WAMPUM, you must be using version 2.9 or later of the software.
  4567.           You must assure that some field in your data base has unique
  4568.           values and is indexed before implementing transaction logging.
  4569.           This index must be set as the PRIMARY INDEX before executing a
  4570.           configuration update.  Then select the G - Config Update option
  4571.           and change the Enable Audit Trail? prompt to True.  Thereafter,
  4572.           WAMPUM will automatically create an AUDIT.DBF file in which it
  4573.           will post any changes to the current data base using the index
  4574.           which was the current index at the time of configuration update
  4575.           as the key field in the event later transaction log posting is
  4576.           desired.
  4577.           
  4578.                It is the developer's responsibility to assure that the
  4579.           AUDIT.DBF file is periodically purged since it will continue to
  4580.           grow indefinitely until the Enable Audit Trail prompt is turned
  4581.           back off by setting it false.  Purging consists of deleting
  4582.           AUDIT.DBF and AUDIT.DBT from the current application directory
  4583.           with the following commands:
  4584.           
  4585.                          CD \{current application directory}
  4586.                          DEL AUDIT.*
  4587.           
  4588.                Once these files are deleted, WAMPUM will recreate them the
  4589.           next time WAMPUM is run in this directory.  See the section of
  4590.           the User's Guide which addresses the COPY UTILITIES for infor-
  4591.           mation on posting transactions to the master data base from an
  4592.           audit trail file.
  4593.           
  4594.           
  4595.           3.1.15  Preformatted Output (WAMPUM.DBF)
  4596.           
  4597.           3.1.15.1  Overview
  4598.           
  4599.                WAMPUM PreFormatted Output is the feature for which many
  4600.           dBASE users have clamored for years.  It is nothing more than a
  4601.           tool by which a developer can "hard-code" ALL required components
  4602.  
  4603.  
  4604.  
  4605.                                        - 66 -
  4606.  
  4607.  
  4608.  
  4609.  
  4610.  
  4611.  
  4612.           of a report, label, or form letter process in advance.  Stated
  4613.           differently, it frees the end-user from having to specify which
  4614.           records should be printed and in what order every time a report
  4615.           is run.  How is this magic performed?  Very simply.  For each new
  4616.           application you develop, WAMPUM will create a separate data base
  4617.           file, WAMPUM.DBF, which stores up to 80 preformatted reports,
  4618.           labels, and form letters.  The end user then can call up a list
  4619.           of these preformatted output choices and mark the ones desired as
  4620.           True.  These then are produced automatically with no further user
  4621.           intervention.
  4622.           
  4623.           
  4624.           3.1.15.2  Building the WAMPUM File
  4625.           
  4626.                The first step in developing WAMPUM Preformatted Output is
  4627.           to create the WAMPUM.DBF file to store the information.  This is
  4628.           done by selecting W - WAMPUM PreFormatted Output from the Main
  4629.           System Menu.  When WAMPUM asks whether to create the WAMPUM file,
  4630.           respond with either T or Y to create the empty data base.
  4631.           
  4632.           
  4633.           3.1.15.3  Adding/Editing the WAMPUM File
  4634.           
  4635.                Building preformatted output is much like adding and editing
  4636.           data in any other .DBF file.  First, pick the F - File Select
  4637.           option from the Main System Menu, and enter WAMPUM as the name of
  4638.           the data base to use.
  4639.           
  4640.                When the Main System Menu returns, the bottom of the screen
  4641.           should show the file in use with the message: FILE: WAMPUM. 
  4642.           
  4643.                To create a new entry in the file, select the A - ADD record
  4644.           option.  To change an existing entry, select E - EDIT record.
  4645.           
  4646.                When the data entry screen appears, you will be prompted for
  4647.           the following items of information concerning the report, label,
  4648.           or form letter you wish to preformat:
  4649.           
  4650.                DATAFILE -  Enter the name of the primary data file which
  4651.                          will be used in producing the output.  Do NOT
  4652.                          include the .DBF file extension.
  4653.           
  4654.                SORTINDX -  If you want the output sorted in a particular
  4655.                          order, then you may specify the sort index by
  4656.                          entering the name of index file.  Do NOT enter the
  4657.                          .NTX file extension.  If this field is left blank,
  4658.                          the output will be produced in the actual order of
  4659.                          the records in the primary data base.
  4660.           
  4661.                RPTLBLFRM - Enter either R, L, or F to tell WAMPUM whether
  4662.                          the output will be a report (.FRM file), label
  4663.                          (.LBL file), or form letter (.DBF file).
  4664.           
  4665.                OUTFILE - Enter the name of the actual report form, label
  4666.                          format, or form letter file.  Do NOT include the
  4667.                          file extension.
  4668.  
  4669.  
  4670.  
  4671.                                        - 67 -
  4672.  
  4673.  
  4674.  
  4675.  
  4676.  
  4677.  
  4678.           
  4679.                FONT - Enter a number between 0 and 9 to identify which FONT
  4680.                          will be used in generating the output.  See the
  4681.                          section on Printer Configuration for more info.
  4682.           
  4683.                CRITERIA -  Enter the selection criteria just as they would
  4684.                          be entered in the Select Utilities option
  4685.                          previously discussed.  Note that there is one
  4686.                          enhancement.  If there is a particular range of
  4687.                          dates you want to prompt for at execution time,
  4688.                          then you can specify the field to which the date
  4689.                          range will apply by surrounding that field with
  4690.                          //'s.  For example, suppose you were generating a
  4691.                          report which would show new job applications
  4692.                          received for a certain period of time.  If the
  4693.                          field name storing the application date was
  4694.                          APPLICDT, then the following syntax in the
  4695.                          criteria would allow the user to enter a date
  4696.                          range at run time for the application date:
  4697.                          //APPLICDT//.
  4698.           
  4699.                DESCRIP -  Enter a brief description for the output you just
  4700.                          designed.  This is what will appear on the menu
  4701.                          when the user selects WAMPUM Preformatted Output.
  4702.           
  4703.                RELFILE1 -  Enter the file name of the file to be related to
  4704.                          the primary data base when the output is run.  See
  4705.                          the section on Z - Zoom/Relate File for more info.
  4706.           
  4707.                RELINDX1 -  Enter the file name of the index to be used in
  4708.                          relating the secondary file to a field in the
  4709.                          primary file.  See Z - Zoom/Relate File for info.
  4710.           
  4711.                Once all of the above entries have been made, a new record
  4712.           is stored in the WAMPUM.DBF file.  When you have added all of the
  4713.           entries desired.  Exit from  WAMPUM by pressing <ESC> from the
  4714.           Main System Menu.  Then restart WAMPUM and select the W option to
  4715.           try out your new output.
  4716.           
  4717.           
  4718.           3.1.16  Resetting the Developer Password
  4719.           
  4720.                Beginning with version 2.2, WAMPUM provides the capability
  4721.           to reset the developer password from VOODOO to some other
  4722.           password of your choice.  This is done using the DOS ENVIRONMENT
  4723.           and the SET command.  To reset the password, you should insert a
  4724.           line such as what appears below in the AUTOEXEC.BAT file in the
  4725.           root directory of the hard disk which will be used to boot the
  4726.           system.
  4727.           
  4728.                          SET WAMPUM=MOVOODOO
  4729.           
  4730.  
  4731.  
  4732.  
  4733.  
  4734.  
  4735.  
  4736.  
  4737.                                        - 68 -
  4738.  
  4739.  
  4740.  
  4741.  
  4742.  
  4743.  
  4744.                The value of the WAMPUM environment variable beginning with
  4745.           the THIRD character becomes the new developer password when the
  4746.           system is restarted.  In the case outlined above, the password
  4747.           still would be VOODOO since the first and second characters are
  4748.           ignored.
  4749.           
  4750.                Note that this is anything but a secure system.  What it
  4751.           will do is keep the casual or novice user from entering WAMPUM in
  4752.           developer mode accidentally.
  4753.           
  4754.           
  4755.           3.1.17  Network Considerations
  4756.           
  4757.                Multi-user data base access via NETBIOS-compatible networks
  4758.           adds a whole new dimension to WAMPUM applications. Considerations
  4759.           such as security, passwords, audit trails, record and file
  4760.           locking are but a few of the new worries you will face.
  4761.           
  4762.                The best advice for those just getting started is START
  4763.           SMALL.  A few users sharing a simple data base is the best way to
  4764.           get a feel for networks.  WAMPUM provides a margin of security
  4765.           and reliable record and file locking.  Because of the nature of
  4766.           DOS and the computers which run under DOS, WAMPUM is NOT and
  4767.           CANNOT take the place of the mainframe at your local department
  4768.           store.
  4769.           
  4770.                For many network applications, you may not need WAMPUM to
  4771.           impose password security.  If you don't need it, DON'T USE IT!
  4772.           If you do need it, include a line in your AUTOEXEC.BAT file for
  4773.           each computer on the network which says: SET USERID=X.  Instead
  4774.           of X, you may assign each user a name if you so desire.  Then in
  4775.           a separate subdirectory, run WAMPUM and build a new file called
  4776.           USERS with two character fields of 8 characters each.  The field
  4777.           names must be USER and PASSWORD.  If desired, you may add a third
  4778.           field named SUPERVISOR which must be a logical field.  Once you
  4779.           have created the data base, build an index named USER on the USER
  4780.           field.  Then add records to the file for each user on the network
  4781.           giving each user a secret password.  If you included the
  4782.           SUPERVISOR field, mark it True for those who should have access
  4783.           to WAMPUM in Developer Mode.  When you finish adding all records,
  4784.           exit to DOS and copy both USERS.DBF and USER.NTX into a directory
  4785.           which is part of the DOS PATH.  Thereafter, whenever any user
  4786.           runs WAMPUM, he or she will be prompted for a USER NAME and
  4787.           PASSWORD which must be in the file you created.  If you decide
  4788.           you no longer wish to require USER NAMES and PASSWORDs, simply
  4789.           delete the SET USERID line from the AUTOEXEC.BAT file for those
  4790.           particular network users.
  4791.           
  4792.                Another consideration of which you should be aware is that
  4793.           Clipper, while permitting read access to an entire file while
  4794.           records in that file are locked, nevertheless imposes a file lock
  4795.           whenever an indexed SEEK is underway.  This typically is only for
  4796.           a moment; however, if you run reports against voluminous data
  4797.           bases in which only a few records will qualify for the report,
  4798.           you should be aware that the file will be locked up if you are
  4799.           using an active index during the periods spent searching for
  4800.  
  4801.  
  4802.  
  4803.                                        - 69 -
  4804.  
  4805.  
  4806.  
  4807.  
  4808.  
  4809.  
  4810.           individual qualifying records in the data base.  The file will be
  4811.           unlocked momentarily as each record for the report is found. 
  4812.           This may or may not be palatible in a high volume data entry
  4813.           environment.  In such environments, you may wish to consider
  4814.           running reports against a duplicate of the data base and indexes
  4815.           or you may wish to run reports during periods in which data entry
  4816.           is not critical, i.e. bedtime.
  4817.           
  4818.           
  4819.           3.1.18  Making a Backup of the User Application
  4820.           
  4821.                Once you have completed building a new application in its
  4822.           own subdirectory, this then can be saved using the BACKUP command
  4823.           for subsequent use by end-users.  When the application is
  4824.           completed, simply type the following command substituting the
  4825.           name of the SUBDIRECTORY in which you built the application for
  4826.           the word SUBDIR below.  If you are using a drive other than Drive
  4827.           C, you would want to change the C: as well.
  4828.           
  4829.                     BACKUP C:\SUBDIR\*.* A:
  4830.           
  4831.                This will make a copy of the application on a formatted
  4832.           floppy in Drive A.
  4833.           
  4834.                The end user then can take this floppy and restore it to the
  4835.           system on which it will be run with the command:
  4836.           
  4837.                     RESTORE A: C:\*.* /S
  4838.           
  4839.                The DOS Restore command automatically will construct the new
  4840.           subdirectory on their hard disk and then copy the application
  4841.           without any user knowledge of file copying.
  4842.           
  4843.           
  4844.           3.1.19  Writing the Documentation
  4845.           
  4846.                Perhaps the most important step in building a new
  4847.           application is to write some documentation explaining what the
  4848.           system does and how to use it.  For ease of use, the WAMPUM
  4849.           User's Guide has been paginated in such a way that the end-user
  4850.           section can be extracted and used as the first section of your
  4851.           completed documentation for any new application.  Don't
  4852.           distribute new applications without documentation!  It gives
  4853.           WAMPUM and yourself a bad name.
  4854.           
  4855.           
  4856.           3.2   ! - RUNning an External Program
  4857.           
  4858.                Assuming you have sufficient memory, external programs can
  4859.           be run from within WAMPUM using the !- Run External Program
  4860.           option on the Main System Menu.  The following programs can be
  4861.           run: executable programs in either .EXE or .COM format and DOS
  4862.           batch files with .BAT file extension.  In addition, you can exit
  4863.           to the DOS level temporarily by entering \COMMAND.COM as the file
  4864.           name to run.  Note, this only works with DOS 3.0 and above. 
  4865.  
  4866.  
  4867.  
  4868.  
  4869.                                        - 70 -
  4870.  
  4871.  
  4872.  
  4873.  
  4874.  
  4875.  
  4876.           Similarly, directory paths may precede program names with DOS 3.0
  4877.           or above.  Any program within the DOS PATH may be run without
  4878.           specifying the directory path.
  4879.           
  4880.           
  4881.           3.3   Z - ZOOMing or RELATing a Supplemental File
  4882.           
  4883.                WAMPUM provides the capability to link a secondary file for
  4884.           purposes of report, label, and form letter output.  This can be
  4885.           done automatically within the WAMPUM Preformatted Output option,
  4886.           or it can be done manually using the Z - Zoom/Relate File option.
  4887.           
  4888.                There are many instances in which it is helpful to have a
  4889.           secondary file to provide "table lookup" of data which otherwise
  4890.           would have to be retyped in each record of a data base.  For
  4891.           example, if each customer has an ACCOUNT NUMBER, it would be
  4892.           silly to build an orders file which required the entry of the
  4893.           customer's name, address, and phone number every time an order
  4894.           was placed.  Instead, the orders file could contain the customer
  4895.           number, and a secondary file could be used to "look up" the
  4896.           customer's name, address, and phone number whenever a report,
  4897.           label, or form letter was produced.
  4898.           
  4899.                There are four prerequisites for relating a secondary file
  4900.           with WAMPUM.  (1)  There must be an IDENTICAL field in both the
  4901.           main data base and the related file; (2) the key field in the
  4902.           related file must be indexed on that key; (3) the index file name
  4903.           must be identical to the name of the key field; and (4) both the
  4904.           related file and its index must either be in the default
  4905.           directory or must be accessible via the DOS PATH.
  4906.           
  4907.                To link a secondary file, pick the Z - Zoom/Relate File
  4908.           option on the Main System menu.  Then enter the name of the
  4909.           secondary file and the index.  When the Main System Menu
  4910.           reappears, the last line of the screen will show a relation is in
  4911.           effect with the following expression:
  4912.           
  4913.                               FILE: ORDERS/R
  4914.           
  4915.                Fields in the related file may then be accessed within
  4916.           report and label forms as well as within form letter files using
  4917.           the following syntax: ALIAS->FIELDNAME where ALIAS is the name of
  4918.           the related file and FIELDNAME is the field name to be output.
  4919.           
  4920.                See the example below for further clarification:
  4921.           
  4922.           CUSTOMER ORDER FILE (ORDERS.DBF)   CUSTOMER FILE (ACCOUNTS.DBF)
  4923.           --------------------------------   ----------------------------
  4924.           
  4925.                ACCTNO    ---- RELATED FIELD --->       ACCTNO   (INDEXED) 
  4926.                
  4927.                ORDERDT                                 CUSTNAME
  4928.           
  4929.                ITEMS                                   ADDRESS
  4930.           
  4931.                                                        PHONE
  4932.  
  4933.  
  4934.  
  4935.                                        - 71 -
  4936.  
  4937.  
  4938.  
  4939.  
  4940.  
  4941.  
  4942.           
  4943.                As a FIELD CONTENTS entry in the report form, you could then
  4944.           specify  ACCOUNTS->CUSTNAME once the ACCOUNTS file was related
  4945.           using the ACCTNO index.  This would tell WAMPUM to output the
  4946.           actual customer name rather than the account number found in the
  4947.           orders file.
  4948.           
  4949.           
  4950.           3.4   G - Global Replacement of Data 
  4951.           
  4952.                There are occasions in which it is desirable to replace
  4953.           different pieces of data in a file for a large number of records
  4954.           in one pass rather than calling up each record individually. 
  4955.           
  4956.                WARNING: Be aware that the potential for disaster goes up
  4957.           dramatically any time you are replacing data simultaneously for
  4958.           more than one record!  If you are new to WAMPUM and particularly
  4959.           to the power of dBASE III's REPLACE command, STAY AWAY FROM THIS
  4960.           OPTION! This feature has been added to WAMPUM against my better
  4961.           judgment because of the pleas of many experienced dBASE users.  I
  4962.           fear that the howls from mistakes may far outweigh the benefits. 
  4963.           If you do not need the temptation of this option, delete item 18
  4964.           from the Menu # list when you configure new WAMPUM applications!
  4965.           
  4966.                G - Global Replace is a function closely akin to global
  4967.           search and replace on many word processing systems.  It involves
  4968.           (1) selecting a group of records to be processed and then (2)
  4969.           revising one or more fields of data in the records which meet the
  4970.           selection criteria.
  4971.           
  4972.                If you already have entered Selection Criteria, then
  4973.           executing G - Global Replace always works with the group of
  4974.           records meeting those search criteria.  If you have not already
  4975.           entered Selection Criteria, then selecting G - Global Replace
  4976.           always triggers WAMPUM's Select Assist first.  You must enter
  4977.           selection criteria before Global Replace will work.  You are well
  4978.           advised to run a list using the Select Criteria you have in mind
  4979.           for Global Replace to make sure the correct records have been
  4980.           selected.  Once Global Replace has been executed, it's too late
  4981.           to get them back!  See the Select Utilities section of the User's
  4982.           Guide for more details.
  4983.           
  4984.                Once record selection criteria are in effect, G - Global
  4985.           Replace will display the Global Replace Screen which permits you
  4986.           to specify up to 10 different fields which can be updated in one
  4987.           pass through the data base.  For each field, you specify two
  4988.           pieces of information: (1) the field name and (2) the dBASE
  4989.           string expression to be executed against that piece of data.
  4990.           
  4991.                In its simplest form, you may wish to replace all DUE DATES
  4992.           with a new value 30 days later than the existing date.  Assuming
  4993.           you already have selected the range of records to be changed, the
  4994.           correct procedure would be to use the <Up> or <Down> arrow to
  4995.           first find the DUEDT field.  Once displayed, press <ENTER>.  When
  4996.           prompted for the string expression, enter the following:
  4997.  
  4998.  
  4999.  
  5000.  
  5001.                                        - 72 -
  5002.  
  5003.  
  5004.  
  5005.  
  5006.  
  5007.  
  5008.           DUEDT+30.  Then press <ENTER>.  If there is another field to be
  5009.           replaced, you would leave the LINK in the AND display and press
  5010.           <ENTER>.  A second line would permit you to repeat the above
  5011.           process for another piece of information.  When finished, simply
  5012.           press <PgDn> while the cursor is in the LINK field and the global
  5013.           search and replace will proceed.  If you have made a mistake,
  5014.           press <ESC> to exit without executing the global replace!
  5015.           
  5016.                If a group of last names had been entered in upper and lower
  5017.           case and you wanted to convert them to ALL UPPER CASE, you would
  5018.           first specify the group of records to be processed using SELECT
  5019.           ASSIST.  Then, when the GLOBAL REPLACE SCREEN appears, find the
  5020.           LASTNAME field, press <ENTER>, type UPPER(LASTNAME) for the field
  5021.           expression, press <ENTER>, and <PgDn> to proceed.
  5022.           
  5023.                If a last name of a customer changed from JONES to JOHNSON
  5024.           (and you're sure using Select Assist that you have narrowed down
  5025.           the group of records to the correct JONES only), then, when the
  5026.           GLOBAL REPLACE SCREEN appears, find the LASTNAME field, press
  5027.           <ENTER>, type "JOHNSON" for the field expression, press <ENTER>,
  5028.           and <PgDn> to proceed.
  5029.           
  5030.                MORAL:  Always RUN A LIST against your existing SELECTION
  5031.           CRTIERIA to make certain that only the desired records will be
  5032.           REPLACED before executing G - Global Replace.  If you're new to
  5033.           WAMPUM and data base management, make a full backup of your data
  5034.           base application before using this option! Don't say you haven't
  5035.           been warned!
  5036.           
  5037.           
  5038.           3.5   C - Copy Utilities for Importing & Exporting Data
  5039.           
  5040.                WAMPUM's C - Copy Utilities option provides a rich variety
  5041.           of file importing and exporting tools permitting standard dBASE
  5042.           data bases to be transferred into or out of virtually all of the
  5043.           common file formats.  In addition, a data base structure file can
  5044.           be created which permits simple revision of a data base structure
  5045.           where additional fields become desirable after an application has
  5046.           been built. With the exception of the dBASE III structure and
  5047.           audit trail  options, you can narrow down which records will be
  5048.           copied by first specifying selection criteria using the S -
  5049.           Select Utilities option.  You will be prompted whether to
  5050.           override the selection.
  5051.           
  5052.                When the C - Copy Utilities option is selected, you
  5053.           initially are prompted for three pieces of information:  (1)
  5054.           whether you will be COPYing data TO or FROM another file from the
  5055.           file currently in use; (2) the file type of the other file; and
  5056.           (3) the file name of the other file.
  5057.           
  5058.                Copying TO Another File requires that the first prompt be
  5059.           answered with a T.  Then a file type is specified. And then the
  5060.           file name of the receiving file is specified.  
  5061.           
  5062.  
  5063.  
  5064.  
  5065.  
  5066.  
  5067.                                        - 73 -
  5068.  
  5069.  
  5070.  
  5071.  
  5072.  
  5073.  
  5074.                If you specify a dBASE III type data base file as the
  5075.           receiving file, then one will be created if the file name
  5076.           specified does not already exist.  If it exists, you will be
  5077.           asked whether to Abort, Overwrite, or Append to the existing
  5078.           external file.
  5079.           
  5080.                If you specify COPY TO a dBASE III Structure, WAMPUM will
  5081.           copy the structure of the current data base into a new .DBF file
  5082.           with four fields: Field_Name, Field_Type, Field_Len, and
  5083.           Field_Dec.  Each record entry in the new file will match a field
  5084.           in the structure of the current data base.  This file then can be
  5085.           added to, edited, records can be deleted, etc.  Once revised,
  5086.           this file then can be used as the new file structure template for
  5087.           transferring the current data base into a new file structure. 
  5088.           This is covered in detail below.
  5089.           
  5090.                If you COPY TO a Standard Data Format file, WAMPUM will
  5091.           create a new flat file consisting of all the selected data in the
  5092.           current data base in ASCII format.  Each record will occupy one
  5093.           line in the new file with a carriage return/line feed at the end
  5094.           of the line.
  5095.           
  5096.                COPYing TO a Delimited Format file permits the user to
  5097.           identify what character should be used to surround each character
  5098.           field in the new data base.  For example, BASIC expects character
  5099.           fields in a sequential file to be delimited with QUOTES.
  5100.           
  5101.                COPYing TO an Audit Trail file is never permissible.  You
  5102.           may edit the AUDIT file just as you would edit any other file.
  5103.           
  5104.                COPYing TO an Empty dBASE III file makes a duplicate empty
  5105.           data base file with the same file structure as the current file
  5106.           in use.
  5107.           
  5108.                Copying From Another File means that you will be IMPORTING
  5109.           data from another file INTO the data base file currently in use. 
  5110.           The only exception is the dBASE III Structure option covered
  5111.           below.  To COPY FROM another file, enter F at the To/From prompt.
  5112.             
  5113.                If you COPY FROM another dBASE III data base, then the
  5114.           information in ALL records in that data base will be appended to
  5115.           the data already in the current data base.  Only field data whose
  5116.           field names and type match exactly those of the current data base
  5117.           will be copied.  Existing records in the current data base will
  5118.           not be deleted.
  5119.           
  5120.                If you COPY FROM a Standard Data Format file, its records
  5121.           are appended to the information, if any, which already exists in
  5122.           the current data base.  Note that the current dBASE III file
  5123.           structure should be created first to match the format of the SDF
  5124.           file.  If you don't understand this, obtain a good dBASE III
  5125.           Primer before attempting to use this option or the next one.
  5126.           
  5127.  
  5128.  
  5129.  
  5130.  
  5131.  
  5132.  
  5133.                                        - 74 -
  5134.  
  5135.  
  5136.  
  5137.  
  5138.  
  5139.  
  5140.                If you COPY FROM a Delimited file, its records are appended
  5141.           to the information, if any, which already exists in the current
  5142.           data base.  Note that the current dBASE III file structure should
  5143.           be created first to match the format of the delimited file.
  5144.           
  5145.                COPYING FROM a dBASE III Structure is WAMPUM's way of
  5146.           allowing you to modify the structure of the current data base and
  5147.           move the file contents to a new dBASE III file.  To modify a
  5148.           file's structure, follow the steps outlined above to create and
  5149.           revise a new dBASE III structure file.  Once completed, place the
  5150.           original dBASE III data base file back in use with F - File
  5151.           Select. Then pick the COPY FROM option and specify option 2, a
  5152.           dBASE III Structure.  Enter the name of the structure file as the
  5153.           external file.  You then will be prompted to enter a name for a
  5154.           new dBASE III data base file to be built using the new structure
  5155.           and the data from the data base file currently in use.  Enter a
  5156.           name of your choice and press <ENTER>.  Once completed, place the
  5157.           new file in use and check the data to assure that it copied what
  5158.           you intended before deleting the old data base!  Once you are
  5159.           certain that it looks the way it should, you should reindex the
  5160.           file following the instructions in the I - Index Select/Create
  5161.           section of this User's Guide.  You then can delete the original
  5162.           data base preferably after making a backup copy to a floppy.
  5163.           
  5164.                COPYING FROM an Audit Trail file is WAMPUM's way of allowing
  5165.           posting from a transaction file.  To use this option requires
  5166.           version 2.9 or later of WAMPUM.  In addition, the developer must
  5167.           have set the AUDIT TRAIL flag True for this application when the
  5168.           G - Config Update option was run. And, the audit flag must be set
  5169.           to False before posting to the master data base begins.  Assuming
  5170.           the above conditions have been met, a file will exist in the
  5171.           default directory named AUDIT.DBF.  This should be entered as the
  5172.           external file name or simply enter the drive designator
  5173.           indicating the drive location of the AUDIT files, e.g. C: or A:
  5174.           with a floppy.  For the transaction posting to work, the current
  5175.           file and lead index must match the file and lead index designated
  5176.           when the audit trail file was created.  Otherwise, an error
  5177.           message will be given indicating what the required file and index
  5178.           must be.  If no error condition is present, then WAMPUM will post
  5179.           all information in the audit file to the current data base and
  5180.           will notify the user when this has been completed.  Remember that
  5181.           the values in the lead index must be unique or the AUDIT file
  5182.           will be posted to the first matching key found in the index. Note
  5183.           also that this function is accessible only to users with the
  5184.           developer password.
  5185.           
  5186.           
  5187.           3.6   Deleting & Undeleting Groups of Records
  5188.           
  5189.                WAMPUM provides a means of marking a group of records as
  5190.           DELETED as well as a means of restoring a group of records which
  5191.           already have been marked for deletion.  To use this function, you
  5192.           must start WAMPUM with the Developer Password!  You also must
  5193.           have specified Record Selection Criteria, and there must be a
  5194.           primary index which evaluates to a character expression.  If any
  5195.  
  5196.  
  5197.  
  5198.  
  5199.                                        - 75 -
  5200.  
  5201.  
  5202.  
  5203.  
  5204.  
  5205.  
  5206.           of these three prerequisites is missing, WAMPUM ignores the
  5207.           attempt to delete or undelete a group of records just as if the
  5208.           function did not exist.
  5209.           
  5210.                Once the above prerequisites have been satisfied, you
  5211.           should first run a sample listing using the List File
  5212.           Contents option in the S - Select Utilities.  This will assure
  5213.           that you are working with the group of records desired.
  5214.           
  5215.                Next, pick the function desired: either M - Mark Records
  5216.           *DEL* or U - UN*DEL* Records.  When WAMPUM prompts for the entry
  5217.           to find, type an asterisk (*) and press <ENTER>.  If the
  5218.           prerequisites in the first paragraph have been met, WAMPUM will
  5219.           ask if you really want to DELETE or RESTORE the selected group of
  5220.           records.  Type Y if you want to proceed, or press <ESC> to abort.
  5221.           
  5222.                This function provides a quick way to mark a large group of
  5223.           records deleted once the same group of records has been archived
  5224.           to a different file.  When the X - Rebuild/FileFix option is then
  5225.           run, the group of records is deleted permanently and cannot be
  5226.           restored with the U - UN*DEL* Records function.
  5227.           
  5228.                Note that this function requires an active Record Selection
  5229.           Criteria expression to avoid the possibility of marking every
  5230.           record in a file as deleted.  If you really want to delete all
  5231.           records in a file, use the following Record Selection Criteria:
  5232.           
  5233.                               RECNO() >= 1
  5234.           
  5235.           This expression specifies ALL RECORDS in the file for WAMPUM.
  5236.           
  5237.           
  5238.           3.7   Reserved Variables, dBASE & Clipper Functions                                    _____   _______          
  5239.           
  5240.           3.7.1  Overview
  5241.           
  5242.                In addition to a number of reserved functions provided in
  5243.           the standard implementation of the dBASE III programming
  5244.           language, WAMPUM adds all Clipper enhancements plus some new
  5245.           functions of its own.  This section is designed to bring you up
  5246.           to speed on these new functions and some of the major dBASE III
  5247.           commands and functions.  It is by no means an exhaustive
  5248.           treatment of all dBASE III functions.  Consult any of the dBASE
  5249.           III reference books in your local bookstore for more information
  5250.           on the dBASE III commands and functions.
  5251.           
  5252.           
  5253.           3.7.2  CHARACTER/STRING functions
  5254.           
  5255.                Character string manipulation becomes critical in producing
  5256.           meaningful reports and form letters.  WAMPUM provides a rich
  5257.           assortment of functions to assist the developer.  As is true of
  5258.           all functions, each contains a keyword followed by parentheses, 
  5259.           one or more arguments separated by commas, and closing
  5260.           parentheses.
  5261.           
  5262.  
  5263.  
  5264.  
  5265.                                        - 76 -
  5266.  
  5267.  
  5268.  
  5269.  
  5270.  
  5271.  
  5272.                AT(exp1,exp2) allows a search of the second string
  5273.           expression for the first occurrence of the first expression. A
  5274.           numeric value is returned for the character position of the first
  5275.           match.  For example, AT("son","Thompson") would return 6. If no
  5276.           match is found, a 0 is returned.
  5277.           
  5278.                CHR(n) returns an ASCII character represented by ASCII code
  5279.           n.  For example, CHR(27) is the escape code.
  5280.           
  5281.                SPACE(n) allows the generation of n spaces where n is a
  5282.           numeric value.  For example SPACE(5) produces 5 spaces.
  5283.           
  5284.                STR(exp1,n,dec) converts a numeric expression (exp1)into a
  5285.           string expression n characters long with dec decimals.  For
  5286.           example, STR(153.123,5,1) would yield "153.1".
  5287.           
  5288.                SUBSTR(exp1,n,len) permits extraction of a portion of a
  5289.           string from a larger string. n is a numeric specifying the
  5290.           starting position in the exp1 string. len is a numeric specifying
  5291.           the number of characters to extract from the starting position.
  5292.           For example, SUBSTR("Thompson",3,2) would return "om" which is 2
  5293.           characters beginning at character position 3.
  5294.           
  5295.                TRIM(exp1) tells WAMPUM to trim off trailing spaces from a
  5296.           character string.  For example, if a 30 character NAME field
  5297.           contained "John Jones                    " then TRIM(NAME) would
  5298.           yield "John Jones" with no trailing spaces.
  5299.           
  5300.                UPPER(exp1) converts a string expression to all UPPERCASE.
  5301.           The converse is LOWER(exp1) which does the opposite.
  5302.           
  5303.                VAL(exp1) returns a numeric value for the exp1 string.  For
  5304.           example, VAL("02345") would return the integer 2345.
  5305.           
  5306.           
  5307.           3.7.3  DATE functions
  5308.           
  5309.                WAMPUM supports the dBASE III function for today's date
  5310.           which is DATE() as well as the reserved word TODAY which also is
  5311.           today's date in date format.
  5312.           
  5313.                The standard dBASE III means of converting a date to a
  5314.           character string is supported.  DTOC(DATE()) would convert
  5315.           today's date to a character string in the format 06/12/86. The
  5316.           converse also works to convert a string to a date:
  5317.           CTOD("06/12/86") would convert the string to a date variable.
  5318.           
  5319.                Several DAY functions are available including CDOW() which
  5320.           outputs the actual day of the week such as Monday; DAY() which
  5321.           produces a numeric representing the day of the month such as 31;
  5322.           DOW() which produces a numeric representing the day of the week
  5323.           such as 5.  Note that an empty date field always produces DOW
  5324.           equal to 0.  This is a good way of testing for blank dates.
  5325.           
  5326.  
  5327.  
  5328.  
  5329.  
  5330.  
  5331.                                        - 77 -
  5332.  
  5333.  
  5334.  
  5335.  
  5336.  
  5337.  
  5338.                Several MONTH functions also are available.  MONTH() outputs
  5339.           a numeric representing the month of the year such as 2. CMONTH()
  5340.           generates the actual name of the month such as February.
  5341.           
  5342.                dBASE III also supports YEAR() which outputs a 4-digit
  5343.           numeric value representing the year such as 1987.
  5344.           
  5345.                Clipper provides a date-to-string conversion function with
  5346.           the DTOS() command.  The syntax is DTOS(FILINGDT).  Assuming a
  5347.           filing date of 10/10/85, DTOS(FILINGDT) would output the string 
  5348.           "19851010".  This function is particularly helpful in building
  5349.           indexes where a date field is converted to a string, but the
  5350.           developer wishes to preserve the proper ordering of dates.
  5351.           
  5352.                In producing reports and labels, you can reformat a date
  5353.           field into a standard date character string using the WAMPUM
  5354.           function FULLDATE().  The syntax is FULLDATE(FILINGDT) assuming
  5355.           FILINGDT was a date field in your data base.  If the filing date
  5356.           were 10/20/85, FULLDATE(FILINGDT) would output October 20, 1985.
  5357.           
  5358.                In some applications, it may be desirable to roll a date
  5359.           over to Monday if it hits on a weekend.  WAMPUM's WEEKDAY()
  5360.           function does this.  Assuming a filing date of 06/14/86 hits on a
  5361.           Saturday, the expression WEEKDAY(FILINGDT) would return a date
  5362.           expression with a value of 06/16/86 which is the following
  5363.           Monday. Note that this function could be combined with a previous
  5364.           one to produce a standard text date:FULLDATE(WEEKDAY(FILINGDT)).
  5365.           
  5366.           
  5367.           
  5368.           3.7.4  DUPKEY("FIELDNAME") prevents duplicate keys
  5369.           
  5370.                When building the EDIT.DBF edit checks, many users expressed
  5371.           a desire to be able to test whether the key field of the record
  5372.           being added to a data base already existed and, if so, to return
  5373.           an error. This is critical if you will be using the AUDIT TRAIL
  5374.           function. The DUPKEY function of WAMPUM provides this capability.
  5375.           In order to use it, the following conditions must be met.  First,
  5376.           the key field to be checked must be indexed.  Second, that index
  5377.           must be the primary (first) index in use when the file is ADDed
  5378.           to or EDITed.  Finally, the name of the key field must be
  5379.           specified in parentheses and quotation marks as an edit check in
  5380.           the EDIT.DBF file.  The syntax is shown in the following example
  5381.           using PARTNO as the name of the indexed key field which is to be
  5382.           checked:
  5383.           
  5384.                               DUPKEY("PARTNO")
  5385.           
  5386.                     
  5387.           
  5388.           
  5389.           3.7.5  EMPTY(fieldname) tests for empty fields
  5390.           
  5391.                EMPTY(FieldName) returns a logical True if a character,
  5392.           memo, or date field is empty, or if a numeric field is 0, or if a
  5393.           logical field is False.  Otherwise, a logical False is returned.
  5394.  
  5395.  
  5396.  
  5397.                                        - 78 -
  5398.  
  5399.  
  5400.  
  5401.  
  5402.  
  5403.  
  5404.           3.7.6  LASTTIME field in data bases
  5405.           
  5406.                If LASTTIME is included as a Character-type field in any
  5407.           data base, WAMPUM will automatically post the current time to
  5408.           this field whenever a record is ADDed or EDITed in that data
  5409.           base.  This provides a convenient method of determining when
  5410.           records were last updated with no user control over the field
  5411.           contents.
  5412.           
  5413.           
  5414.           3.7.7  LASTUPDT field in data bases
  5415.           
  5416.                If LASTUPDT is included as a Date-type field in any data
  5417.           base, WAMPUM will automatically post the current date to this
  5418.           field whenever a record is ADDed or EDITed in that data base. 
  5419.           This provides a convenient method of determining when records
  5420.           were last updated with no user control over the field contents.
  5421.           
  5422.           
  5423.           3.7.8  LASTUSER field in data bases
  5424.           
  5425.                If LASTUSER is included as a Character-type field in any
  5426.           data base, WAMPUM will automatically post the current USERID to
  5427.           this field whenever a record is ADDed or EDITed in that data base
  5428.           if the SET USERID=X line has been added to the AUTOEXEC.BAT file
  5429.           for each network user.  This provides a convenient method of
  5430.           determining who screwed up what with no user control over the
  5431.           field contents.  Please note that before using the SET USERID=X
  5432.           command, you must first create a USERS data base and index with
  5433.           the names and passwords of those authorized access to WAMPUM.
  5434.           
  5435.           
  5436.           3.7.9  MEMOTRAN(fieldname) outputs MEMO fields
  5437.           
  5438.                MEMOTRAN(FieldName) is a Clipper function designed to assure
  5439.           that MEMO fields are output correctly in reports.  See the
  5440.           discussion in the Reports section of this User's Guide.
  5441.           
  5442.           
  5443.           3.8   PATH considerations 
  5444.           
  5445.                Whenever WAMPUM is started, part of its initialization
  5446.           process includes reading the DOS PATH which then becomes WAMPUM's
  5447.           PATH as well.  For this reason, developers need to be careful NOT
  5448.           to build WAMPUM applications in a directory which is part of the
  5449.           DOS PATH since all of the files in this directory then would be
  5450.           accessed by other WAMPUM applications.  What should be stored in
  5451.           a directory supported by the DOS PATH command are the following
  5452.           files: WAMPUM.EXE, REPORT.EXE, LABEL.EXE, and the printer config
  5453.           files such as HPLASERA.MEM, HPLASERB.MEM, and EPSON.MEM.  This
  5454.           will make all of these files accessible to users in any WAMPUM
  5455.           subdirectory.  
  5456.           
  5457.                The only exception to these guidelines might be in
  5458.           situations in which a related file and its index need to be
  5459.           shared with several different applications.  In this case, just
  5460.  
  5461.  
  5462.  
  5463.                                        - 79 -
  5464.  
  5465.  
  5466.  
  5467.  
  5468.  
  5469.  
  5470.           the related file and index should be placed in a directory
  5471.           supported by the DOS PATH command, NOT the configuration files
  5472.           for the WAMPUM application itself.  If you don't understand this
  5473.           exception, don't use it.
  5474.           
  5475.           
  5476.           3.9   Enabling USERID's and Passwords
  5477.           
  5478.                WAMPUM now may be configured to require those accessing
  5479.           files through WAMPUM to log in with a USERID and PASSWORD. 
  5480.           Typically this would be used for network applications if the
  5481.           network itself does not provide adequate protection. The USERID-
  5482.           PASSWORD system also may be invoked in single-user applications. 
  5483.           
  5484.                Step 1 to force use of the USERID-PASSWORD system is to
  5485.           create a data base which will store the user names and passwords
  5486.           of those authorized to utilize WAMPUM.  Create a new subdirectory
  5487.           on your hard disk and run WAMPUM in Developer Mode.  Then Build A
  5488.           New File and name it USERS.  Two fields must be created in this
  5489.           file structure. Two additional fields are optional.  The two
  5490.           mandatory fields are USER and PASSWORD.  Both fields must be
  5491.           Character-type fields with a field length of 8. The optional
  5492.           fields are SUPERVISOR, which must be a Logical field of length 1,
  5493.           and CONFIG, which must be a character field of length 8.
  5494.           
  5495.                Once you have built the new data base, use File Select to
  5496.           place the USERS file in use.  Then use Index Select/Create to
  5497.           build an index on the USER field.  You then are ready to ADD
  5498.           records to the data base for each anticipated user.  For each
  5499.           user, you must include a user name and password.  THESE ENTRIES
  5500.           BOTH MUST BE IN ALL UPPER CASE LETTERS!  Once you have added all
  5501.           the entries desired, exit to the DOS level and copy USERS.DBF and
  5502.           USER.NTX into a directory which is part of the DOS path.  This
  5503.           will enable WAMPUM to find the files whenever an attempt is made
  5504.           to run WAMPUM.  Assuming your \DOS subdirectory is part of the
  5505.           path, a simple command to copy the files would be as follows:
  5506.           
  5507.                               COPY USER*.* \DOS
  5508.           
  5509.                Whenever you wish to add new users, move to the directory in
  5510.           which you established the original copy of the file (NOT the
  5511.           directory which is part of the DOS PATH!).  Add whatever new
  5512.           entries are desired, and then recopy the file to the same
  5513.           directory sharing the DOS PATH which was used previously.
  5514.           
  5515.                If you accidentally get tangled up to the point that you
  5516.           cannot get into WAMPUM, you can turn OFF the password feature by
  5517.           disabling the USERID variable in the environment.  To do this,
  5518.           exit to DOS and type the following command at the DOS prompt:
  5519.           
  5520.                               SET USERID=
  5521.           
  5522.                If the SUPERVISOR field is used and is marked True for a
  5523.           given user, then WAMPUM automatically will be started in
  5524.           Developer mode for that user.  This means that the expanded menu
  5525.           of 21 options will be displayed for this user.
  5526.  
  5527.  
  5528.  
  5529.                                        - 80 -
  5530.  
  5531.  
  5532.  
  5533.  
  5534.  
  5535.  
  5536.           
  5537.                If the CONFIG field is used, then the developer may specify
  5538.           a configuration file for use by each user.  This configuration
  5539.           file takes the place of WAMPUM.MEM which will be used unless the
  5540.           CONFIG field is used and has an entry. The process for generating
  5541.           these individual configurations is quite simple.  Create a new
  5542.           WAMPUM configuration as you normally would using the * - Config
  5543.           Update option.  Then exit to DOS and copy the WAMPUM.MEM file
  5544.           which was created to a new filename making certain that the file
  5545.           extension remains .MEM. Then edit the USERS data base and add an
  5546.           appropriate CONFIG file name for the users desired.  
  5547.           
  5548.                For example, let's assume there is a USER named Jones.  We
  5549.           want that user's CONFIG file to be named JONES.MEM.  Run WAMPUM
  5550.           in Developer Mode and configure the application in the normal
  5551.           manner.  Now exit to DOS and type COPY WAMPUM.MEM JONES.MEM.
  5552.           Revise Jones' entry in the USERS data base to reflect a CONFIG
  5553.           field value of JONES.  That's all there is to it.
  5554.           
  5555.           
  5556.           3.10  WAMPUM & DOS System Errors
  5557.           
  5558.                WAMPUM System Errors are error conditions caused by one of
  5559.           three conditions: (1) a DOS-error is detected, (2) a Clipper
  5560.           error is detected, or (3) the abort program key (ALT-C) is
  5561.           pressed by the user.  In any of these three situations, a system
  5562.           error message appears on the top line of the screen followed by a
  5563.           prompt asking Quit, Abort, Ignore.  What follows is a brief
  5564.           description of what to do in each of these error situations.
  5565.           
  5566.                DOS errors typically are caused by a hardware failure such
  5567.           as a bad hard disk, a missing floppy disk in Drive A, or an out
  5568.           of memory condition.  With any DOS error, you should always
  5569.           select the Quit option.  This option gracefully closes all open
  5570.           data bases and indexes and assures that no permanent damage is
  5571.           done to your data.  Abort should never be used since this forces
  5572.           an immediate exit to DOS without closing any files. Ignore should
  5573.           never be used except in the circumstance where you have forgotten
  5574.           to insert a floppy disk and you are attempting to execute a copy
  5575.           to Drive A. The following is a list of the most common DOS errors
  5576.           
  5577.                1    Invalid Function
  5578.                2    File Not Found
  5579.                3    Path Not Found
  5580.                4    Too Many Open Files (Reread CONFIG.SYS requirements!)
  5581.                5    Network Access Denied
  5582.                6    Invalid File Handle
  5583.                7    Memory Error
  5584.                8    Insufficient Memory
  5585.                9    Memory Error
  5586.                10   Invalid Environment
  5587.                11   Invalid Format
  5588.                12   Invalid Access Code
  5589.                13   Invalid Data
  5590.                14   Reserved Code
  5591.                15   Invalid Disk Drive Specified
  5592.  
  5593.  
  5594.  
  5595.                                        - 81 -
  5596.  
  5597.  
  5598.  
  5599.  
  5600.  
  5601.  
  5602.                18   No More Files
  5603.                19   Write-Protected Disk
  5604.                20   Unknown Unit
  5605.                21   Drive Not Ready
  5606.                23   Data Error (CRC)
  5607.                25   Seek Error
  5608.                26   Unknown Media
  5609.                27   Sector Not Found
  5610.                28   Printer Out of Paper
  5611.                29   Write Fault
  5612.                30   Read Fault
  5613.                31   General Failure (Usually a Bad Hard Disk)
  5614.                32   Sharing Violation (Network enabled?)
  5615.                33   Lock Violation (Network enabled?)
  5616.                80   File Exists
  5617.                83   Failure on INT 24
  5618.           
  5619.                Clipper errors typically occur when WAMPUM encounters an
  5620.           illegal dBASE expression in a report or label form, in macro
  5621.           expressions or edit checks, or in a record selection
  5622.           specification.  For example, if you entered LASTNAME=Jones as a
  5623.           record selection criteria without surrounding Jones in quotes, a
  5624.           system error would occur whenever you executed a report, label,
  5625.           form letter, or listing of the file. Unfortunately, the current
  5626.           version of the Clipper compiler provides no means for WAMPUM to
  5627.           test such expressions for validity before executing them.  Once
  5628.           Clipper attempts to execute an invalid expression, a system error
  5629.           occurs. You are generally safer executing the Quit option when
  5630.           these conditions occur.  You then can revise the offending code
  5631.           and try again. In the case of invalid dBASE expressions, you
  5632.           usually can opt to Ignore the error so long as you understand
  5633.           that the results of any output produced may be erroneous.
  5634.           
  5635.                There may be occasions when you want to cancel some WAMPUM
  5636.           session usually because a report listing is not producing the
  5637.           results desired and you do not want to waste 100 sheets of paper.
  5638.           You can always press ALT-C to cancel what you are doing.  Then
  5639.           select the Quit option to assure that all of your data bases are
  5640.           closed gracefully.  Do NOT press CTRL-ALT-DEL as a means of
  5641.           terminating WAMPUM.  This may result in damage to any data bases
  5642.           which are in use at the time.  
  5643.           
  5644.           
  5645.           3.11  Credits
  5646.           
  5647.                The following are trademarks or registered trademarks of the
  5648.           respective companies:
  5649.           
  5650.                Clipper                                 Nantucket Corp. 
  5651.                dBASE, dBASE III, and dBASE III Plus    Ashton-Tate
  5652.                LOTUS, 1-2-3, and Symphony              LOTUS Development Co
  5653.                IBM, IBM PC, and IBM PC-AT              IBM Corporation
  5654.                HP LaserJet, Plus, and LaserJet II      Hewlett Packard
  5655.  
  5656.  
  5657.  
  5658.  
  5659.  
  5660.  
  5661.                                        - 82 -
  5662.  
  5663.  
  5664.  
  5665.  
  5666.                                  WAMPUM User's Guide INDEX
  5667.  
  5668.  
  5669.           .AND.  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  20
  5670.           .DBF . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  17
  5671.           .DBT . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  17
  5672.           .FRM . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  26
  5673.           .LBL . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  26
  5674.           .MEM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  5675.           .NOT. $  . . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  5676.           .NTX . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  35
  5677.           .OR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  20
  5678.           $  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19, 21
  5679.           *DEL*  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  11
  5680.           *MEMO* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
  5681.           <  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  5682.           <= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  5683.           <> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  5684.           <Del>  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
  5685.           <Down> Cursor  . . . . . . . . . . . . . . . . . . . . . . . . . 5
  5686.           <Enter>  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
  5687.           <ESC>  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
  5688.           <Ins>  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
  5689.           <PgDn> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
  5690.           <PgUp> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
  5691.           <Up> Cursor  . . . . . . . . . . . . . . . . . . . . . . . . . . 5
  5692.           =  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  5693.           >  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  5694.           >= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  5695.           Aborting . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
  5696.           ADD
  5697.                New fields  . . . . . . . . . . . . . . . . . . . . . . .  35
  5698.                New records . . . . . . . . . . . . . . . . . . . . . . . . 7
  5699.           ALT-C  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  81
  5700.           Application Development  . . . . . . . . . . . . . . . . . . .  31
  5701.           ASCII codes  . . . . . . . . . . . . . . . . . . . . . . .  40, 77
  5702.           At least . . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  5703.           At most  . . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  5704.           AT(exp1,exp2)  . . . . . . . . . . . . . . . . . . . . . . . .  77
  5705.           Audit Trail  . . . . . . . . . . . . . . . . . . . . . . 2, 41, 66
  5706.           AUDIT.DBF  . . . . . . . . . . . . . . . . . . . . . . . . . .  66
  5707.           BACKUP
  5708.                Applications  . . . . . . . . . . . . . . . . . . . . . .  70
  5709.           Boolean  . . . . . . . . . . . . . . . . . . . .  2, 7, 18, 21, 31
  5710.           Boot disk  . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  5711.           Break Level  . . . . . . . . . . . . . . . . . . . . . . . . .  43
  5712.           BROWSE MODE  . . . . . . . . . . . . . . . . 2, 18, 24, 25, 33, 41
  5713.                Fields displayed  . . . . . . . . . . . . . . . . . . . .  59
  5714.           BUFFERS  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  5715.           Building New Applications  . . . . . . . . . . . . . . . . . .  32
  5716.           Building Reports . . . . . . . . . . . . . . . . . . . . . . .  41
  5717.           Calculated fields  . . . . . . . . . . . . . . . . . . . 1, 61, 62
  5718.           Capitalization . . . . . . . . . . . . . . . . . . . . . . . . . 9
  5719.           CDOW() . . . . . . . . . . . . . . . . . . . . . . . . . . . .  77
  5720.           Change Lead Index  . . . . . . . . . . . . . . . . . . . . . .  24
  5721.           Character field  . . . . . . . . . . . . . . . . . . . . . . .  33
  5722.           CHR(n) . . . . . . . . . . . . . . . . . . . . . . . . . . . .  77
  5723.           Clipper  . . . . . . . . . . . . . . . . . . . . . . . . . . 1, 82
  5724.           CMONTH() . . . . . . . . . . . . . . . . . . . . . . . . . . .  78
  5725.  
  5726.  
  5727.                                      Appendix - Page 1
  5728.  
  5729.  
  5730.  
  5731.  
  5732.                                  WAMPUM User's Guide INDEX
  5733.  
  5734.  
  5735.           Compatibility  . . . . . . . . . . . . . . . . . . . . . . . 4, 33
  5736.           CONFIGURATION  . . . . . . . . . . . . . . . . . . . . . .  15, 81
  5737.                CONFIG.SYS  . . . . . . . . . . . . . . . . . . . . . . 3, 81
  5738.                Customized  . . . . . . . . . . . . . . . . . . . . . . .  81
  5739.                Printer . . . . . . . . . . . . . . . . . . . . . . . . .  37
  5740.                Storing . . . . . . . . . . . . . . . . . . . . . . . . .  41
  5741.                Update  . . . . . . . . . . . . . . . . . . . . . . . . .  41
  5742.           Confirm data entry . . . . . . . . . . . . . . . . . . . . . .  41
  5743.           Connector selection  . . . . . . . . . . . . . . . . . . .  22, 23
  5744.           Connectors . . . . . . . . . . . . . . . . . . . . . . . . . .  18
  5745.           Contained in . . . . . . . . . . . . . . . . . . . . . . . . .  19
  5746.           Context-sensitive HELP . . . . . . . . . . . . . . . . . . . . . 4
  5747.           CONVERSION
  5748.                Data  . . . . . . . . . . . . . . . . . . . . . . . . . .  77
  5749.           COPY
  5750.                Utilities . . . . . . . . . . . . . . . . . . . . . . . 1, 73
  5751.           CREATE
  5752.                New subdirectory  . . . . . . . . . . . . . . . . . . . .  32
  5753.                New Labels  . . . . . . . . . . . . . . . . . . . . . . .  49
  5754.                New File  . . . . . . . . . . . . . . . . . . . . . . . .  33
  5755.                New Report  . . . . . . . . . . . . . . . . . . . . . . .  42
  5756.                New Indexes . . . . . . . . . . . . . . . . . . . . . . .  36
  5757.           Credits  . . . . . . . . . . . . . . . . . . . . . . . . . . .  82
  5758.           Criteria . . . . . . . . . . . . . . . . . . . . . . . . .  21, 23
  5759.           CTOD() . . . . . . . . . . . . . . . . . . . . . . . . . .  21, 77
  5760.           Ctrl-<Left> Cursor . . . . . . . . . . . . . . . . . . . . . . . 5
  5761.           Ctrl-<Right> Cursor  . . . . . . . . . . . . . . . . . . . . . . 5
  5762.           Ctrl-End . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
  5763.           Ctrl-Home  . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
  5764.           Ctrl-W . . . . . . . . . . . . . . . . . . . . . . . . . . .  5, 8
  5765.           Ctrl-Y . . . . . . . . . . . . . . . . . . . . . . . . . . .  6, 9
  5766.           Cursor & Function Keys . . . . . . . . . . . . . . . . . . . . . 5
  5767.           Customization  . . . . . . . . . . . . . . . . . . . . . . . . . 4
  5768.           Customized data entry menus  . . . . . . . . . . . . . . . . .  64
  5769.           Damaged data . . . . . . . . . . . . . . . . . . . . . . . . . . 1
  5770.           DATA BASE
  5771.                Relating  . . . . . . . . . . . . . . . . . . . . . . . .  40
  5772.                Secondary . . . . . . . . . . . . . . . . . . . . . . . .  40
  5773.                File packing  . . . . . . . . . . . . . . . . . . . . . .  17
  5774.                Management system . . . . . . . . . . . . . . . . . . .  1, 7
  5775.           DATA ENTRY . . . . . . . . . . . . . . . . . . . . . . .  7, 8, 25
  5776.                Menus . . . . . . . . . . . . . . . . . . . . . .  18, 23, 64
  5777.                Screens . . . . . . . . . . . . . . . . . . . . . . . . 1, 31
  5778.           DATE . . . . . . . . . . . . . . . . . . . . . . . . . . .  21, 28
  5779.                Conversion  . . . . . . . . . . . . . . . . . . . . . . .  77
  5780.                Calculations  . . . . . . . . . . . . . . . . . . . . . .  47
  5781.                Field . . . . . . . . . . . . . . . . . . . . . . . .  21, 33
  5782.                DATE()  . . . . . . . . . . . . . . . . . . . . . . . . .  77
  5783.           DAY()  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  77
  5784.           Decimals . . . . . . . . . . . . . . . . . . . . . . . . . . .  34
  5785.           DEFAULT
  5786.                Directory . . . . . . . . . . . . . . . . . . . . . . . .  31
  5787.                Drives  . . . . . . . . . . . . . . . . . . . . . . . . .  41
  5788.           DELETE . . . . . . . . . . . . . . . . . . . . . . .  9, 11-13, 17
  5789.                Records . . . . . . . . . . . . . . . . . . . . . . .  12, 29
  5790.                Groups of records . . . . . . . . . . . . . . . . . . . .  75
  5791.  
  5792.  
  5793.                                      Appendix - Page 2
  5794.  
  5795.  
  5796.  
  5797.  
  5798.                                  WAMPUM User's Guide INDEX
  5799.  
  5800.  
  5801.           Delimited Format file  . . . . . . . . . . . . . . . . . . . .  74
  5802.           Developer Functions  . . . . . . . . . . . . . . . . . . . . .  31
  5803.           Developer Mode . . . . . . . . . . . . . . . . . . . . . . .  3, 4
  5804.           Developer Password . . . . . . . . . . . . . . . . . . . .  32, 68
  5805.           DEVICE
  5806.                Output Print  . . . . . . . . . . . . . . . . . . . . . .  41
  5807.           Digitized signatures . . . . . . . . . . . . . . . . . . . . .  38
  5808.           Directory  . . . . . . . . . . . . . . . . . . . . . . . . . 3, 31
  5809.           Disable menu choices . . . . . . . . . . . . . . . . . . . . .  41
  5810.           DISPLAY  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
  5811.                Records . . . . . . . . . . . . . . . . . . . . . . . . .  10
  5812.           DOCUMENTATION
  5813.                Writing . . . . . . . . . . . . . . . . . . . . . . . . .  70
  5814.           DOS  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
  5815.                PATH  . . . . . . . . . . . . . . . . . . . . . . . . . .  31
  5816.           DOW()  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  77
  5817.           DRIVES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
  5818.                Default . . . . . . . . . . . . . . . . . . . . . . . . .  41
  5819.           DTOC() . . . . . . . . . . . . . . . . . . . . . . . . . . . .  77
  5820.           DTOS() . . . . . . . . . . . . . . . . . . . . . . . . . . . .  78
  5821.           DUPKEY() . . . . . . . . . . . . . . . . . . . . . . . . . . .  78
  5822.           Duplicate keys . . . . . . . . . . . . . . . . . . . . . . . 9, 78
  5823.           EDIT
  5824.                Checks  . . . . . . . . . . . . . . . . . . . . 1, 31, 58, 59
  5825.                Mode  . . . . . . . . . . . . . . . . . . . . . . . . . .  10
  5826.                Record  . . . . . . . . . . . . . . . . . . . . . . . .  8, 9
  5827.           EDIT.DBF . . . . . . . . . . . . . . . . . . . . . . . . .  58, 78
  5828.           Empty fields . . . . . . . . . . . . . . . . . . . . . . . . .  78
  5829.           EMPTY()  . . . . . . . . . . . . . . . . . . . . . . . . . . .  78
  5830.           Enable Audit Trail . . . . . . . . . . . . . . . . . . . . . .  66
  5831.           END  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
  5832.           END-USER
  5833.                Functions . . . . . . . . . . . . . . . . . . . . . . . . . 6
  5834.                Mode  . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  5835.           Environment  . . . . . . . . . . . . . . . . . . . . . . . . .  68
  5836.           Equals . . . . . . . . . . . . . . . . . . . . . . . . . .  19, 20
  5837.           Errors
  5838.                DOS . . . . . . . . . . . . . . . . . . . . . . . . . . .  81
  5839.                System  . . . . . . . . . . . . . . . . . . . . . . . . .  81
  5840.                WAMPUM  . . . . . . . . . . . . . . . . . . . . . . . . .  81
  5841.           Exit WAMPUM  . . . . . . . . . . . . . . . . . . . . . . . . . . 4
  5842.           Exporting Data . . . . . . . . . . . . . . . . . . . . . . . .  73
  5843.           External Program . . . . . . . . . . . . . . . . . . . . . . .  70
  5844.           Extracting data  . . . . . . . . . . . . . . . . . . . . 6, 17, 42
  5845.           F1 function key  . . . . . . . . . . . . . . . . . . . . . . . . 6
  5846.           Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
  5847.           FIELD
  5848.                Calculated  . . . . . . . . . . . . . . . . . . . . .  61, 62
  5849.                Character . . . . . . . . . . . . . . . . . . . . . . . .  33
  5850.                Data Expressions  . . . . . . . . . . . . . . . . . .  53, 54
  5851.                Date  . . . . . . . . . . . . . . . . . . . . . . . . . .  33
  5852.                Decimals  . . . . . . . . . . . . . . . . . . . . . . . .  34
  5853.                Empty . . . . . . . . . . . . . . . . . . . . . . . . . .  78
  5854.                          Lengths . . . . . . . . . . . . . . . . . . . .  33
  5855.                Logical . . . . . . . . . . . . . . . . . . . . . . . . .  33
  5856.                Memo  . . . . . . . . . . . . . . . . . . . . . . . . . .  33
  5857.  
  5858.  
  5859.                                      Appendix - Page 3
  5860.  
  5861.  
  5862.  
  5863.  
  5864.                                  WAMPUM User's Guide INDEX
  5865.  
  5866.  
  5867.           FIELD
  5868.                MEMO conversion . . . . . . . . . . . . . . . . . . . . .  79
  5869.                Names . . . . . . . . . . . . . . . . . . . . . . . .  23, 33
  5870.                Numeric . . . . . . . . . . . . . . . . . . . . . . . . .  33
  5871.                Types . . . . . . . . . . . . . . . . . . . . . . . . . 1, 33
  5872.           FILE
  5873.                Creation  . . . . . . . . . . . . . . . . . . . . . . . .  33
  5874.                Exporting Data  . . . . . . . . . . . . . . . . . . . . .  73
  5875.                Importing Data  . . . . . . . . . . . . . . . . . . . . .  73
  5876.                Indexing  . . . . . . . . . . . . . . . . . . . . . . . .  35
  5877.                Locking . . . . . . . . . . . . . . . . . . . . . . . . 2, 69
  5878.                Maintenance . . . . . . . . . . . . . . . . . . . . . . .  16
  5879.                New . . . . . . . . . . . . . . . . . . . . . . . . . . .  34
  5880.                Packing . . . . . . . . . . . . . . . . . . . . . . . . .  17
  5881.                Related . . . . . . . . . . . . . . . . . . . . . . . . .  71
  5882.                Revising  . . . . . . . . . . . . . . . . . . . . . . . .  34
  5883.                Selection . . . . . . . . . . . . . . . . . . . . . . . 7, 34
  5884.                Structure . . . . . . . . . . . . . . . . . . . . . . . .  25
  5885.                FileFix . . . . . . . . . . . . . . . . . . . . . . .  12, 16
  5886.           Font . . . . . . . . . . . . . . . . . . . . . . . . . . .  26, 38
  5887.           Forced field confirmation  . . . . . . . . . . . . . . . . . . . 2
  5888.           FORM LETTER  . . . . . . . . . . . . . . . 1, 2, 7, 27, 41, 52, 67
  5889.                Creating  . . . . . . . . . . . . . . . . . . . . . . . .  52
  5890.                Field Data Expressions  . . . . . . . . . . . . . . .  53, 54
  5891.                Spacing . . . . . . . . . . . . . . . . . . . . . . . . .  53
  5892.                TEXT MARKERS  . . . . . . . . . . . . . . . . . . . . . .  53
  5893.                Word wrapping . . . . . . . . . . . . . . . . . . . . . .  52
  5894.           FULLDATE() . . . . . . . . . . . . . . . . . . . . . . . . . .  78
  5895.           Function Key Macros  . . . . . . . . . . . . . . . . . . . . .  56
  5896.           Functions  . . . . . . . . . . . . . . . . . . . . . . . .  21, 76
  5897.           GLOBAL
  5898.                Delete  . . . . . . . . . . . . . . . . . . . . . . . . .  76
  5899.                Replacement . . . . . . . . . . . . . . . . . . . . . . .  72
  5900.                Search  . . . . . . . . . . . . . . . . . . . . . . . . . . 2
  5901.           Greater than . . . . . . . . . . . . . . . . . . . . . . . . .  19
  5902.           Group  . . . . . . . . . . . . . . . . . . . . . . . . . .  13, 15
  5903.           Hard disk  . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
  5904.           Heading  . . . . . . . . . . . . . . . . . . . . . . . . . . .  41
  5905.           HELP . . . . . . . . . . . . . . . . . . . . . . . .  4, 6, 29, 30
  5906.           HOME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
  5907.           How to Run . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  5908.           IIF()  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  48
  5909.           Immediate IF . . . . . . . . . . . . . . . . . . . . . . . . .  48
  5910.           Importing data . . . . . . . . . . . . . . . . . . . . . . . 1, 73
  5911.           INDEX  . . . . . . . . . . . . . . . . . . . . . . 1, 7-10, 17, 24
  5912.                     A New File . . . . . . . . . . . . . . . . . . . . .  35
  5913.                Building  . . . . . . . . . . . . . . . . . . . . . . . .  36
  5914.                Compatibility . . . . . . . . . . . . . . . . . . . . . .  35
  5915.                Complex . . . . . . . . . . . . . . . . . . . . . . . . .  36
  5916.                Creation  . . . . . . . . . . . . . . . . . . . . . . . .  36
  5917.                Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
  5918.                Selection . . . . . . . . . . . . . . . . . . . . . .  36, 37
  5919.           Input  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
  5920.           Keyboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
  5921.           Keyboard macros  . . . . . . . . . . . . . . . . . . . . .  31, 58
  5922.           KEYS . . . . . . . . . . . . . . . . . . . . . . . . . . . .  5, 9
  5923.  
  5924.  
  5925.                                      Appendix - Page 4
  5926.  
  5927.  
  5928.  
  5929.  
  5930.                                  WAMPUM User's Guide INDEX
  5931.  
  5932.  
  5933.           KEYS
  5934.                Duplicate . . . . . . . . . . . . . . . . . . . . . . . .  78
  5935.           KEYS.DBF . . . . . . . . . . . . . . . . . . . . . . . . . . .  56
  5936.           LABEL  . . . . . . . . . . . . . . . . 1, 7, 26-28, 39, 49, 50, 67
  5937.                Contents  . . . . . . . . . . . . . . . . . . . . . . . .  50
  5938.                Creating  . . . . . . . . . . . . . . . . . . . . . . . .  50
  5939.                Design  . . . . . . . . . . . . . . . . . . . . . . . . .  49
  5940.                Generator . . . . . . . . . . . . . . . . . . . . . . . 4, 49
  5941.                Modifying Existing Format . . . . . . . . . . . . . . . .  51
  5942.                Pagination  . . . . . . . . . . . . . . . . . . . . . . .  51
  5943.                Settings  . . . . . . . . . . . . . . . . . . . . . . . .  50
  5944.                Width . . . . . . . . . . . . . . . . . . . . . . . . . .  50
  5945.           LABEL.COM  . . . . . . . . . . . . . . . . . . . . . . . . . .  49
  5946.           LABEL.EXE  . . . . . . . . . . . . . . . . . . . . . . .  3, 4, 49
  5947.           LASERJET
  5948.                Printer codes . . . . . . . . . . . . . . . . . . . . . .  38
  5949.           LASTTIME . . . . . . . . . . . . . . . . . . . . . . . . . . .  79
  5950.           LASTUPDT . . . . . . . . . . . . . . . . . . . . . . . . . . .  79
  5951.           LASTUSER . . . . . . . . . . . . . . . . . . . . . . . . . . 2, 79
  5952.           LEAD INDEX . . . . . . . . . . . . . . . . . . . . . . . . . 9, 24
  5953.           Less than  . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  5954.           License  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
  5955.           List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
  5956.           LIST FILE  . . . . . . . . . . . . . . . . . . . . . . . . . .  22
  5957.                Contents  . . . . . . . . . . . . . . . . . . . . . .  18, 23
  5958.                Structure . . . . . . . . . . . . . . . . . . . . . .  18, 25
  5959.           Loading  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  5960.           LOCKING  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
  5961.                File  . . . . . . . . . . . . . . . . . . . . . . . . . .  69
  5962.                Record  . . . . . . . . . . . . . . . . . . . . . . . . .  69
  5963.           Logic  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  18
  5964.           Logical fields . . . . . . . . . . . . . . . . . . . . . .  18, 33
  5965.           Macros . . . . . . . . . . . . . . . . . . . . . . .  1, 6, 31, 56
  5966.           Mail merge . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
  5967.           Mailing labels . . . . . . . . . . . . . . . . . . . . . . . .  39
  5968.           Main System Menu . . . . . . . . . . . . . . . . . . . . . . . . 4
  5969.           Maneuvering  . . . . . . . . . . . . . . . . . . . . . . . . . . 4
  5970.           Margin settings  . . . . . . . . . . . . . . . . . . . . . . .  41
  5971.           MARK
  5972.                Group . . . . . . . . . . . . . . . . . . . . . . . . . .  13
  5973.                Records . . . . . . . . . . . . . . . . . . . . . . .  11, 13
  5974.           Marked for deletion  . . . . . . . . . . . . . . . . . . .  23, 25
  5975.           Match  . . . . . . . . . . . . . . . . . . . . . . . . . .  18, 19
  5976.           MEMO fields  . . . . . . . . . . . . . . . .  2, 8, 10, 11, 21, 33
  5977.           Memo file  . . . . . . . . . . . . . . . . . . . . . . . . . .  17
  5978.           Memory requirement . . . . . . . . . . . . . . . . . . . . .  2, 4
  5979.           MEMOTRAN() . . . . . . . . . . . . . . . . . . . . . . . .  48, 79
  5980.           Menu interface . . . . . . . . . . . . . . . . . . . . . . . . . 1
  5981.           MENUS  . . . . . . . . . . . . . . . . . . . . . . . 3, 18, 23, 24
  5982.                Data entry  . . . . . . . . . . . . . . . . . . . . . . .  64
  5983.           MENUS.DBF  . . . . . . . . . . . . . . . . . . . . . . . . . .  64
  5984.           MODIFY
  5985.                LABEL . . . . . . . . . . . . . . . . . . . . . . . . . .  49
  5986.                REPORT  . . . . . . . . . . . . . . . . . . . . . . . . .  42
  5987.                Structure   . . . . . . . . . . . . . . . . . . . . . . .  35
  5988.           Monochrome mode  . . . . . . . . . . . . . . . . . . . .  2, 4, 32
  5989.  
  5990.  
  5991.                                      Appendix - Page 5
  5992.  
  5993.  
  5994.  
  5995.  
  5996.                                  WAMPUM User's Guide INDEX
  5997.  
  5998.  
  5999.           MONTH()  . . . . . . . . . . . . . . . . . . . . . . . . . . .  78
  6000.           MORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
  6001.           Multi-user . . . . . . . . . . . . . . . . . . . . . . .  1, 2, 69
  6002.           Multiple record output . . . . . . . . . . . . . . . . . . . . . 6
  6003.           Nantucket  . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
  6004.           Net-BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . 2, 69
  6005.           NETWORK  . . . . . . . . . . . . . . . . . . . . . . . 1, 2, 6, 69
  6006.                Applications  . . . . . . . . . . . . . . . . . . . . . .  80
  6007.                File Sharing  . . . . . . . . . . . . . . . . . . . . . .  41
  6008.           Not contained in . . . . . . . . . . . . . . . . . . . . . . .  19
  6009.           Not equals . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  6010.           Numeric fields . . . . . . . . . . . . . . . . . . . .  20, 33, 34
  6011.           ORDER  . . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 24
  6012.                Of fields . . . . . . . . . . . . . . . . . . . . . . . .  33
  6013.           OUTPUT . . . . . . . . . . . . . . . . . . . . . . . . .  6, 7, 29
  6014.                Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
  6015.                Order . . . . . . . . . . . . . . . . . . . . . . . . . .  24
  6016.           Packing  . . . . . . . . . . . . . . . . . . . . . . . . . . 1, 17
  6017.           PASSWORD . . . . . . . . . . . . . . . . . . . . . . . . . . .  80
  6018.                Protection  . . . . . . . . . . . . . . . . . . . . . . . . 2
  6019.                Resetting . . . . . . . . . . . . . . . . . . . . . . . .  68
  6020.           PATH . . . . . . . . . . . . . . . . . . . . . . . . . . 3, 31, 69
  6021.                Considerations  . . . . . . . . . . . . . . . . . . . . .  79
  6022.           Power fluctuations . . . . . . . . . . . . . . . . . . . . . .  16
  6023.           PREFORMATTER . . . . . . . . . . . . . . . . . . . . . . . . .  28
  6024.                Output  . . . . . . . . . . . . . . . . . . . . . . .  40, 66
  6025.                Reports . . . . . . . . . . . . . . . . . . . . . . . . .  31
  6026.           PRINT
  6027.                Device  . . . . . . . . . . . . . . . . . . . . . . . . .  41
  6028.                Record  . . . . . . . . . . . . . . . . . . . . . . .  15, 16
  6029.                Listing . . . . . . . . . . . . . . . . . . . . . . . . .  23
  6030.           PRINTER
  6031.                Codes . . . . . . . . . . . . . . . . . . . . . . . . . .  39
  6032.                Configuration . . . . . . . . . . . . . . . . . 3, 15, 37, 39
  6033.                Selection . . . . . . . . . . . . . . . . . . . . . . . .  29
  6034.                Template  . . . . . . . . . . . . . . . . . . . . . . . . . 1
  6035.           PRINTER TABLE
  6036.                Creation  . . . . . . . . . . . . . . . . . . . . . . . .  39
  6037.                Editing . . . . . . . . . . . . . . . . . . . . . . . . .  39
  6038.                Selection . . . . . . . . . . . . . . . . . . . . . . . .  38
  6039.           Quit, Abort, Ignore  . . . . . . . . . . . . . . . . . . . . .  81
  6040.           Quitting WAMPUM  . . . . . . . . . . . . . . . . . . . . . . . . 4
  6041.           Quotation marks  . . . . . . . . . . . . . . . . . . . . . . .  19
  6042.           Range of dates . . . . . . . . . . . . . . . . . . . . . .  21, 28
  6043.           REBUILD/FileFix  . . . . . . . . . . . . . . . . . . .  12, 16, 17
  6044.           Record number  . . . . . . . . . . . . . . . . . . . . . . . . . 9
  6045.           RECORD SELECTION . . . . . . . . . . . . . . . . . . 17-19, 21, 23
  6046.                Criteria  . . . . . . . . . . . . . . . . . . . . . . . .  29
  6047.           Reindexing . . . . . . . . . . . . . . . . . . . . . . . .  17, 35
  6048.           RELATE
  6049.                File  . . . . . . . . . . . . . . . . . . . . . . . . . .  71
  6050.                Secondary File  . . . . . . . . . . . . . . . . . . . . .  40
  6051.           Relational operator  . . . . . . . . . . . . . . . . .  18, 19, 22
  6052.           Replace  . . . . . . . . . . . . . . . . . . . . . . . . . . .  72
  6053.           REPORT . . . . . . . . . . . . . . . . . . . . 1, 7, 25-26, 28, 67
  6054.                Column Contents . . . . . . . . . . . . . . . . . . . . .  43
  6055.  
  6056.  
  6057.                                      Appendix - Page 6
  6058.  
  6059.  
  6060.  
  6061.  
  6062.                                  WAMPUM User's Guide INDEX
  6063.  
  6064.  
  6065.           REPORT
  6066.                Count of Records  . . . . . . . . . . . . . . . . . . . .  46
  6067.                Creation  . . . . . . . . . . . . . . . . . . . . . . . .  41
  6068.                Date calculations . . . . . . . . . . . . . . . . . . . .  47
  6069.                Field Contents  . . . . . . . . . . . . . . . . . . . . .  45
  6070.                Field widths  . . . . . . . . . . . . . . . . . . . . . .  48
  6071.                Generator . . . . . . . . . . . . . . . . . . . . . .  41, 43
  6072.                HEADER  . . . . . . . . . . . . . . . . . . . . . . . . .  46
  6073.                Heading . . . . . . . . . . . . . . . . . . . . . . . . .  43
  6074.                Immediate IF function . . . . . . . . . . . . . . . . . .  48
  6075.                Listings  . . . . . . . . . . . . . . . . . . . . . . . .  18
  6076.                Menu  . . . . . . . . . . . . . . . . . . . . . . . . . .  42
  6077.                MEMO field formatting . . . . . . . . . . . . . . . . . .  47
  6078.                Modifying format  . . . . . . . . . . . . . . . . . . . .  48
  6079.                Multi-line  . . . . . . . . . . . . . . . . . . . . . . .  47
  6080.                Outputting MEMO fields  . . . . . . . . . . . . . . . . .  48
  6081.                TOTALS  . . . . . . . . . . . . . . . . . . . . . . . . .  46
  6082.                Width   . . . . . . . . . . . . . . . . . . . . . . . . .  46
  6083.                Writer  . . . . . . . . . . . . . . . . . . . . . . . . . . 4
  6084.           REPORT.EXE . . . . . . . . . . . . . . . . . . . . . . . . .  3, 4
  6085.           Reserved Variables . . . . . . . . . . . . . . . . . . . . . .  76
  6086.           Revising file structure  . . . . . . . . . . . . . . . . . . .  34
  6087.           RUNning an External Program  . . . . . . . . . . . . . . . . .  70
  6088.           Sample application . . . . . . . . . . . . . . . . . . . . . .  32
  6089.           SAVE . . . . . . . . . . . . . . . . . . . . . . . . . .  5, 8, 10
  6090.           Scan . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  18
  6091.           Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
  6092.           Screen Formats . . . . . . . . . . . . . . . . . . . . . . . . . 1
  6093.           SDF File . . . . . . . . . . . . . . . . . . . . . . . . . . .  74
  6094.           Search . . . . . . . . . . . . . . . . . . . . . . . . . .  10, 18
  6095.           Secondary data base  . . . . . . . . . . . . . . . . . . . . .  40
  6096.           Select . . . . . . . . . . . . . . . . . . . . . . . . . . . 7, 19
  6097.           SELECT ASSIST  . . . . . . . . . . . . . . . . . . .  2, 21-23, 72
  6098.           Select Utilities . . . . . . . . . . . . . . . . . . .  17, 18, 24
  6099.           Selecting Indexes  . . . . . . . . . . . . . . . . . . . . . .  37
  6100.           Selecting the New File . . . . . . . . . . . . . . . . . . . .  34
  6101.           Selection Criteria . . . . . . . . . . . . . . . . . . . . . .  72
  6102.           Signature  . . . . . . . . . . . . . . . . . . . . . . . . . .  38
  6103.           Single record output . . . . . . . . . . . . . . . . . . . . . . 6
  6104.           SKIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  6105.           Sort order . . . . . . . . . . . . . . . . . . . . . . . .  17, 35
  6106.           Sorting  . . . . . . . . . . . . . . . . . . . . . . . . . . .  17
  6107.           SPACE(n) . . . . . . . . . . . . . . . . . . . . . . . . . . .  77
  6108.           Spawn  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  70
  6109.           Standard Data Format file  . . . . . . . . . . . . . . . . . .  74
  6110.           STR(exp1,n,dec)  . . . . . . . . . . . . . . . . . . . . . . .  77
  6111.           STRING
  6112.                Manipulation functions  . . . . . . . . . . . . . . . . .  77
  6113.           STRUCTURE  . . . . . . . . . . . . . . . . . . . 2, 18, 25, 31, 73
  6114.                File  . . . . . . . . . . . . . . . . . . . . . . . . . .  34
  6115.           Subdirectory . . . . . . . . . . . . . . . . . . . . . . . . 3, 32
  6116.           SUBSTR(exp1,n,len) . . . . . . . . . . . . . . . . . . . . . .  77
  6117.           Syntax . . . . . . . . . . . . . . . . . . . . . . . . . .  19, 20
  6118.           System Error . . . . . . . . . . . . . . . . . . . . . . . . .  19
  6119.           Table lookup . . . . . . . . . . . . . . . . . . . . .  58, 62, 71
  6120.           Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
  6121.  
  6122.  
  6123.                                      Appendix - Page 7
  6124.  
  6125.  
  6126.  
  6127.  
  6128.                                  WAMPUM User's Guide INDEX
  6129.  
  6130.  
  6131.           Text Markers . . . . . . . . . . . . . . . . . . . . . . . . .  53
  6132.           Text Strings . . . . . . . . . . . . . . . . . . . . . . . . .  21
  6133.           Tilde  . . . . . . . . . . . . . . . . . . . . . . . . . .  39, 54
  6134.           TIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  79
  6135.           Trademarks . . . . . . . . . . . . . . . . . . . . . . . . . .  82
  6136.           Transaction Logging  . . . . . . . . . . . . . . . . . . . . 2, 66
  6137.           TRIM(exp1) . . . . . . . . . . . . . . . . . . . . . . . . . .  77
  6138.           True/False . . . . . . . . . . . . . . . . . . . . . . . . . .  33
  6139.           UN*DEL* records  . . . . . . . . . . . . . . . . . . . . .  12, 14
  6140.           UNDELETE . . . . . . . . . . . . . . . . . . . . . . . . . . .  17
  6141.                Group . . . . . . . . . . . . . . . . . . . . . . . .  15, 75
  6142.                Records . . . . . . . . . . . . . . . . . . . . . . . . .  13
  6143.           UPDATE
  6144.                Configuration . . . . . . . . . . . . . . . . . . . . . .  41
  6145.                LAST  . . . . . . . . . . . . . . . . . . . . . . . . . .  79
  6146.           UPPER(exp1)  . . . . . . . . . . . . . . . . . . . . . . . . .  77
  6147.           USER
  6148.                Configurations  . . . . . . . . . . . . . . . . . . . . . . 2
  6149.                LAST  . . . . . . . . . . . . . . . . . . . . . . . . . .  79
  6150.                USERID  . . . . . . . . . . . . . . . . . . . . .  69, 79, 80
  6151.           USER.NTX . . . . . . . . . . . . . . . . . . . . . . . . . . .  69
  6152.           USERID . . . . . . . . . . . . . . . . . . . . . . . .  69, 79, 80
  6153.           USERS.DBF  . . . . . . . . . . . . . . . . . . . . . . . . . .  69
  6154.           VAL(exp1)  . . . . . . . . . . . . . . . . . . . . . . . . . .  77
  6155.           Value specification  . . . . . . . . . . . . . . . . . . . . .  22
  6156.           VARIABLES
  6157.                Reserved  . . . . . . . . . . . . . . . . . . . . . . . .  76
  6158.           WAMPUM
  6159.                Master File . . . . . . . . . . . . . . . . . . . . . . .  28
  6160.                Preformatted Output . . . . . . . . . . . . . . . . .  24, 28
  6161.           WAMPUM.DBF . . . . . . . . . . . . . . . . . . . . . . . . . .  66
  6162.           WEEKDAY()  . . . . . . . . . . . . . . . . . . . . . . . . . .  78
  6163.           WP text  . . . . . . . . . . . . . . . . . . . . . . . . . . .  33
  6164.           YEAR() . . . . . . . . . . . . . . . . . . . . . . . . . . . .  78
  6165.           Zoom/Relate File . . . . . . . . . . . . . . . . . . . . .  40, 71
  6166.           
  6167.  
  6168.  
  6169.  
  6170.  
  6171.  
  6172.  
  6173.  
  6174.  
  6175.  
  6176.  
  6177.  
  6178.  
  6179.  
  6180.  
  6181.  
  6182.  
  6183.  
  6184.  
  6185.  
  6186.  
  6187.  
  6188.  
  6189.                                      Appendix - Page 8
  6190.  
  6191.  
  6192.